【发布时间】:2021-05-25 17:39:26
【问题描述】:
我正在尝试学习 java,尤其是扫描仪。所以我尝试创建一个简单的程序,将学生的代码 Course1 course1Degree course2 course2Degree 等作为输入,直到用户输入单词 end。当用户输入结束时,是时候为另一个学生输入相同的信息了。更详细的输入如下所示:
061125 Programming1 6,1 DB1 7,0 Math1 5,5 end[enter]
071234 DB2 5,5 Java 7,3 end[enter]
012343 end[enter]
用户输入end[enter]后,应显示当前学生的平均成绩。
当用户输入学生代码0000[enter]时程序结束。
我的问题是,为了计算每个学生的平均分数,我永远无法读取正确的输入。此外,它似乎不明白何时输入 [end] 以及在第一次输入之后我在输入 0000 时所做的事情并没有停止。这是我到现在为止的。
package test;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
readline();
}
static void readline(){
Scanner scanner = new Scanner(System.in).useDelimiter("\\s");
String course = "";
String code = "";
float mark = 0;
System.out.println("Enter student details: ");
while(!course.equals("end")){
code = scanner.nextLine();
if (code.equals("0000")) {
System.exit(0);
} else {
course = scanner.next();
float sum = 0;
while (!scanner.equals("end")){
mark += scanner.nextFloat();
sum += mark;
System.out.println("sum: " + sum);
}
}
}
System.out.println("Final creds: " + " id: "+ code + " course: " + course + " mark: " + mark);
}
}
【问题讨论】:
-
你可能不想做
scanner.equals("end")因为那只会比较两个指针。你的意思是改用course.equals("end")吗? -
即使改变似乎也不会改变扫描仪读取输入的方式,
-
java 扫描器需要带小数点而不是逗号的浮点数。如果您将输入更改为使用
6.1而不是6,1,它可能会起作用。
标签: java io java.util.scanner user-input