我的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)'
谢谢
答案 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);
}
}