我一直在编写一个Java应用程序,它接受6个值(第一部分为2,第二部分为3,最后为1)。然后它输出第一个数据集的平均值,然后是第二个数据集,然后是总平均值。
import java.io.*;
import static java.lang.System.*;
import java.util.Scanner;
class Main{
public static void main (String str[]) throws IOException {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter your test grades.");
double t1 = scan.nextInt();
double t2 = scan.nextInt();
System.out.println("Please enter your quiz grades.");
double q1 = scan.nextInt();
double q2 = scan.nextInt();
double q3 = scan.nextInt();
System.out.println("Please enter your homework average.");
double hmw = scan.nextInt();
double arc1 = ((t1 + t2) / 2);
System.out.println("Test Average:" + arc1);
double arc2 = ((q1 + q2 + q3) / 3);
System.out.println("Quiz Average:" + arc2);
double arcfinal = ((arc1 * 0.5) + (arc2 * 0.3) + (hmw * 0.2));
System.out.println("Final Grade:" + arcfinal);
}
}
我无法弄清楚我的编码有什么问题。 这是我的错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextInt(Scanner.java:2160)
at java.util.Scanner.nextInt(Scanner.java:2119)
at average.main(Main.java:13)
答案 0 :(得分:1)
我想我不久前遇到过类似的问题。在存储之前,您需要验证输入。要做到这一点,重要的是可视化扫描仪有一个“管道”,其中一个字符串穿过管道的入口(用户输入)和不同的可能值(只是一个文本字符串,一个int,一个double,一个二进制文件,或者其他格式)从管道的另一端“出来”(这是您的代码在您的代码中读取扫描仪。)
以下是您希望实施的验证列表:
我在下面写了一个例子,说明每次找到你的成绩时会发生什么:
import java.io.*;
import static java.lang.System.*;
import java.util.Scanner;
class Main{
static double t1, t2, q1, q2, q3, hmw;
public static void main (String str[]) throws IOException
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter your test grades.");
System.out.println("Enter grade one: ");
// While there is something in the pipe
while(scan.hasNext()!=false)
{
// Check if this value is an integer
if(scan.hasNextInt())
{
t1 = scan.nextInt();
System.out.println("Successful input. Grade entered: "+t1);
break;
}
// it is not an integer, display a message saying it is an invalid input
else
{
// Flush the invalid input
scan.next();
System.out.println("Invalid input detected.");
}
}
//... (rest of the code)
请记住,在这个例子中,如果你输入[任意数量的垃圾非数字文本] +空格+一个整数,它将滚动整个事物并找到整数。