继续询问号码并添加并保留一个计数器,如果输入字母Q

时间:2016-02-11 02:10:27

标签: java

我不知道为什么它不起作用,目标是程序循环并继续要求你输入一个数字并在你输入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();
        }

    }
}

3 个答案:

答案 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";