Java - 扫描仪错误&打印错误

时间:2017-05-01 04:25:15

标签: java eclipse compiler-errors

我的java代码应该是:

编写一个Java程序,读取一系列学生记录并打印每个学生的总分。每条记录都有学生的名字和姓氏,然后是一系列考试成绩和-1的哨兵。序列以单词END结束。 这是一个示例序列:

Harry Morgan 94 71 86 95 -1

Sally Lin 99 98 100 95 90 -1

END

请不要:

提示:您需要嵌套循环

对于C部分,请使用我们仅涵盖的内容。不要使用数组,您不必保存您的值。

我的代码(不确定是否正确):

import java.util.Scanner;
public class PartC {

public static void main(String[] args) {
    //TODO Auto-generated method stub
    String name;
    int score = 0;
    int totalS = 0;

    Scanner input = new Scanner(System.in);
    System.out.print("Enter first, last name: ");
    name = input.next();
    if(name.equals("END"))
    {
        while(score != -1)
        {
            System.out.print("Enter a score: ");
            score = input.nextInt();
            totalS = (totalS+score);
        }
        System.out.print(name + " " + score);
        System.out.print("total is: " + totalS);

问题在于它一直给我错误,而且我不太确定如何相互打印得分(如94 71 86 95):

Enter first, last name: Harry Morgan
Enter a score: Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at PartC.main(PartC.java:18)'

谢谢

1 个答案:

答案 0 :(得分:1)

您使用.next来输入名称。因此,当您输入

Harry Morgan

Harry 视为name Morgan 作为分数。由于 Morgan 无法表示为int,因此您会收到错误。

要解决此问题,请使用nextLine代替next

此外,您的if语句已损坏。请尝试

Scanner input = new Scanner(System.in);
System.out.print("Enter first, last name: ");
name = input.nextLine();
if(!name.equals("END"))
{
    while(score != -1)
    {
        System.out.print("Enter a score: ");
        score = input.nextInt();
        totalS = (totalS+score);
    }
}