系统扫描器用于循环格式的整数和单词

时间:2015-02-25 00:11:38

标签: java loops java.util.scanner

我目前正在高中学习计算机科学课程,这是我第一次编程(自我开始以来已有2周)。我目前已经完成了我的计划,但是有一些细节困扰着我。我应该创建一个程序,可以计算单个标记的平均值,然后计算用户先前输入的所有平均标记。但是我注意到了一些困扰我的事情,这就是如果我在被要求输入名字时输入一个数字,它会认为该数字是一个名字。此外,当我要求5个标记时,程序将运行良好,直到发生错误,如果我不小心输入一个字母或单词。我已经做了一些研究并找到了系统扫描仪,但是我仍然不理解循环情况下的概念。这是我到目前为止所拥有的。任何关于如何纠正这一点的建议或解释都将不胜感激!

import java.io.*;
public class loopingEx6Final {
    public static void main(String args[]) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        double average, totalaverage = 0;
        int Mark, Marktotal=0,  marktotalsum=0, count=0;
        String strName, strMark;
        System.out.println("This program will calculate an individual's personal average and then calculate the class average whn instructed.");
        System.out.println("Please type (finish) in order to calculate class average.");
        System.out.println("Please enter a name.");
        strName = br.readLine ();

        while (!strName.equals("finish")){
            System.out.println("The follwing will calculate the average five marks of "+ strName +".");
            System.out.println("Please enter 5 marks.");
            count++;
            for  (int i=0;i<5;i++) {
                Mark = Integer.parseInt(br.readLine());
                    Marktotal= Marktotal + Mark;        

            }
            average = Marktotal/5;
            System.out.println(strName+"'s average is "+average);
            Marktotal= 0;
            System.out.println("\n"+"Please enter a name.");
            strName = br.readLine ();
            totalaverage=(totalaverage+average)/count;
        }       
        System.out.println("The class average of all input grades is:");
        System.out.println(totalaverage);
        System.out.println();
        System.out.println("Thank you for using the program.");
    }
}

1 个答案:

答案 0 :(得分:0)

使用java.util。*中的Scanner,您可以执行以下操作来读取标记的输入。

Scanner inputs = new Scanner(System.in); // instead of Buffered Reader
int marks, total;
for(int i=0; i<5; i++){
    if(inputs.hasNext()){                // if the input is an integer
        marks = inputs.nextInt();        // use the input
        total += marks;
    } else {
        inputs.readLine();               // read the invalid int input and ignore
        i--;                             // iterate the loop for once more
    }
}

您可以使用inputs.readLine();来读取字符串输入..

如果您需要有关扫描仪的更多参考资料,请尝试使用 http://www.java-made-easy.com/java-scanner.html
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html