我不知道为什么它不起作用,目标是程序循环并继续要求你输入一个数字并在你输入Q时退出。它的循环它应该添加数字inputed并跟踪次数号码输入。当用户输入Q时,程序应退出并打印平均值
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
Scanner scn = new Scanner(System.in);
double counter = 0;
double total;
System.out.print("Enter a number: ");
String testString = scn.next();
while(!testString.equalsIgnoreCase("q")){
double number1 = Double.parseDouble(testString);
total = number1 + testString;
System.out.print(number1);
++counter;
scn.hasNextDouble();
}
}
}
答案 0 :(得分:1)
好的,您的代码中有一些内容不正确。在你的while循环中你使用[firefox #2]
[firefox #2]
[firefox #2] rawFlowsForLast
✓ should return a valid es result
[firefox #2]
[firefox #2] Main Page
✓ should have a title (4840ms)
[firefox #2]
[firefox #2]
[firefox #2] 2 passing (5s)
[firefox #2]
这并不是在做任何事情来帮助你的代码通过while循环。由于您正在检查scn.hasNextDouble
的while循环,我建议您像在代码开头一样更新testString。
此外,testString
行没有任何意义,您应该查看https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html以获取有关原始信息的更多信息。
我不确定你为什么要抛出FileNotFoundException,你正在使用标准系统输入(键盘)而不需要使用
答案 1 :(得分:0)
是的,你需要一个循环来连续检查代码。基本上,程序到达if语句并检查它是否正确。这不是真的,因为你还没有输入字母q。因此,程序只是跳过if语句,并自行结束。
答案 2 :(得分:0)
正如@Elliott Frisch所提到的,你需要在循环中更新testString
。
重复的部分从while
' s {
开始,以结束}
结束。
所以你不重复
String testString = scn.next();
尝试将行放在的while循环中。
String testString;
while(!testString.equalsIgnoreCase("q")){
testString = scn.next();
double number1 = Double.parseDouble(testString);
total = number1 + testString;
System.out.print(number1);
++counter;
}
现在你不断抓住东西,只要它不是'
。为了改善这一点,最好将while循环中的守卫改为:
while (!scn.hasNextDouble()) {
// blah blah
}
这样它一直在阅读,直到找到与Double
不匹配的内容,所以任何字母都会阻止它。
更好的方法是使用scn.nextDouble()
代替scn.next()
,因为这样您就可以确保获得Double
,而且您不需要检查&String
#39; q',您不需要解析while (scn.hasNextDouble()) {
Double number = scn.nextDouble();
total = total + number;
counter++;
}
。
pic.crossOrigin = "Anonymous";