java - 字符串数组和 BufferedReader

标签 java arrays string split newline

我正在做一项类作业,但我一开始就陷入困境。我不知道如何处理用户输入,我会在告诉你任务是什么后详细说明......

第一个输入将是包含 10 个 T 或 F 答案的测验的答案。然后,它接受用户输入学生的名字和姓氏、ID 号,然后回答 T/F 的“测验”,用户输入任意数量的学生,然后“ZZZZ”终止。所有用户输入都输入在一个条目中,这就是我遇到问题的地方。

程序的示例输入:

1 T T T T T F T T F F
Bobb, Bill 123456789  T T T T T F T T F F
Lou, Mary  974387643  F T T T T F T T F F
Bobb, Sam  213458679  F T F T f t 6 T F f
Bobb, Joe  315274986  t t t t t f t t f f
ZZZZ

这将产生输出: 测验 1 的结果:

123-45-6789  Bill Bobb 10
974-38-7643  Mary  Lou 9
213-45-8679  Sam  Bobb 5
315-27-4986  Joe  Bobb 10

The average score is 8.5

我们必须使用 BufferedReader 并且所有输入都是一次性输入的。我遇到的问题是我不知道如何进行输入。起初我想我会按换行符分割输入并创建一个数组,其中每个索引都是换行符,但我现在只打印“ZZZZ”,我不明白为什么?我也不知道如何将第一个索引(答案键)与所有学生的答案进行比较。一旦我按换行符分割输入,我可以按空格分割该数组中的每个索引吗?任何帮助是极大的赞赏!请记住,我对 Java 还很陌生。

到目前为止我所拥有的(我知道不多,但我只是被困在前面)....

public class CST200_Lab4 {

public static void main(String[] args) throws IOException {

    String inputValue = " ";
    String inputArr[] = new String[13];
    String answerKey = null;
    String numStudents[];

    InputStreamReader ISR = new InputStreamReader(System.in);
    BufferedReader BR = new BufferedReader(ISR);


    while(!(inputValue.equalsIgnoreCase("ZZZZ"))) {
        inputValue = BR.readLine();
        inputArr = inputValue.split("\\r+");
        answerKey = inputArr[0];        
    }
    System.out.println(answerKey);      
}

}

最佳答案

在 main() 中使用此代码

    String inputValue = " ";
    String inputArr[] = new String[13];
    String answerKey = null;
    String numStudents[];

    InputStreamReader ISR = new InputStreamReader(System.in);
    BufferedReader BR = new BufferedReader(ISR);

    try {
        inputValue = BR.readLine();
        String answers[] = inputValue.split(" "); 
        int count = 0;
        System.out.println();
        while((inputValue = BR.readLine()) != null) {
            if (inputValue.equalsIgnoreCase("ZZZZ"))
                break;
            inputArr = inputValue.split("\\s+");
            System.out.print(inputArr[2] + " ");
            System.out.print(inputArr[1] + " ");
            System.out.print(inputArr[0].split(",")[0] + " ");
            count = 0;
            for(int i = 0; i <10; i++){
                if(inputArr[i+3].equalsIgnoreCase(answers[i+1]))
                    count ++;
            }
            System.out.print(count);
            System.out.println();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }      

}

我把平均部分留给你计算。不要提。

关于java - 字符串数组和 BufferedReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32961795/

相关文章:

java - Gson 可以使用类生成器反序列化吗?

java - java中返回多个值的最轻量级方法

sql - oracle 12c - 选择最后一次出现字符后的字符串

java - 忽略字符串中的八进制字符

java - 字符串的插入排序

java - 在这种情况下如何使用 Jackson Package?

java - 架构:在不污染 POJO 的情况下操作模型的最佳实践?并且无需到处重复样板代码

java - Spring STS : How to automatically create a webpage for all API methods, 就像 .Net 一样

高阶函数中的 Javascript 对象克隆

arrays - 如何返回包含从临时数组添加的数据的链迭代器?