Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么赢了';这不是循环结束吗? import java.io.*; 导入java.util.Scanner; 公共类解决方案{ 公共静态void main(字符串[]args){ int max=10; int i=0; 长期记录=100000; 而(i!=100){ intx=(int)(Math.random()*max)+1; int y=(int)(Math.random()*max)+1; int解=x+y; long startTime=System.currentTimeMillis(); while(i!=解决方案){ System.out.println(“将解决方案输入到“+x+”+“+y”); 扫描仪sc=新的扫描仪(System.in); i=sc.nextInt(); 如果(i!=解决方案){ 系统输出打印项次(“不正确”); }否则{ System.out.println(“正确!”); } long-endTime=System.currentTimeMillis(); println(“您使用:”+(endTime-startTime)+“ms”); if(结束时间-开始时间作为前哨(如果你到达结果是负的那一点,你也必须调整它)。_Java_While Loop - Fatal编程技术网

为什么赢了';这不是循环结束吗? import java.io.*; 导入java.util.Scanner; 公共类解决方案{ 公共静态void main(字符串[]args){ int max=10; int i=0; 长期记录=100000; 而(i!=100){ intx=(int)(Math.random()*max)+1; int y=(int)(Math.random()*max)+1; int解=x+y; long startTime=System.currentTimeMillis(); while(i!=解决方案){ System.out.println(“将解决方案输入到“+x+”+“+y”); 扫描仪sc=新的扫描仪(System.in); i=sc.nextInt(); 如果(i!=解决方案){ 系统输出打印项次(“不正确”); }否则{ System.out.println(“正确!”); } long-endTime=System.currentTimeMillis(); println(“您使用:”+(endTime-startTime)+“ms”); if(结束时间-开始时间作为前哨(如果你到达结果是负的那一点,你也必须调整它)。

为什么赢了';这不是循环结束吗? import java.io.*; 导入java.util.Scanner; 公共类解决方案{ 公共静态void main(字符串[]args){ int max=10; int i=0; 长期记录=100000; 而(i!=100){ intx=(int)(Math.random()*max)+1; int y=(int)(Math.random()*max)+1; int解=x+y; long startTime=System.currentTimeMillis(); while(i!=解决方案){ System.out.println(“将解决方案输入到“+x+”+“+y”); 扫描仪sc=新的扫描仪(System.in); i=sc.nextInt(); 如果(i!=解决方案){ 系统输出打印项次(“不正确”); }否则{ System.out.println(“正确!”); } long-endTime=System.currentTimeMillis(); println(“您使用:”+(endTime-startTime)+“ms”); if(结束时间-开始时间作为前哨(如果你到达结果是负的那一点,你也必须调整它)。,java,while-loop,Java,While Loop,该程序创建一个简单的加法问题,并要求用户输入答案。它还跟踪正确回答问题所需的时间。我试图通过为I输入100来允许用户结束第一个while循环,但是有没有更好的方法来结束这个循环?除非100也是解决方案,否则它永远不会退出内部循环。最简单的修复方法是在用户输入100时打破该循环,例如: import java.io.*; import java.util.Scanner; public class Solve { public static void main(String[] args

该程序创建一个简单的加法问题,并要求用户输入答案。它还跟踪正确回答问题所需的时间。我试图通过为I输入100来允许用户结束第一个while循环,但是有没有更好的方法来结束这个循环?

除非100也是解决方案,否则它永远不会退出内部循环。最简单的修复方法是在用户输入100时打破该循环,例如:

import java.io.*;
import java.util.Scanner;

public class Solve {
    public static void main(String[] args) {
        int max = 10;
        int i = 0;
        long record = 100000;
        while (i != 100) {
            int x = (int) (Math.random() * max) + 1;
            int y = (int) (Math.random() * max) + 1;
            int solution = x + y;
            long startTime = System.currentTimeMillis();

            while (i != solution) {
                System.out.println("Enter the solution to " + x + "+" + y);
                Scanner sc = new Scanner(System.in);
                i = sc.nextInt();
                if (i != solution) {
                    System.out.println("Incorrect");

                } else {
                    System.out.println("Correct!");
                }
                long endTime = System.currentTimeMillis();
                System.out.println("You took: " + (endTime - startTime) + "ms");

                if (endTime - startTime < record) {
                    record = endTime - startTime;
                    System.out.println("New record time: " + record + "ms");
                }
            }
        }
    }
}
这样,您将退出不断检查正确答案的内部循环,然后外部循环也将退出

可能有更好的方法来表示用户已经完成了,但对于这种情况,这就足够了,因为数字的总和永远不会达到100。如果你想使用更高的数字,可以总结为100,你可能想考虑使用<代码> -1 < /C>作为前哨(如果你到达结果是负的那一点,你也必须调整它)。 您可能还希望向用户说明100是sentinel值,这样他们就不会猜测如何退出程序:

i = sc.nextInt();
if (i == 100) break; // add this line
if (i!=solution) ...
当循环时,您永远不会脱离内部的
。您的执行路径将被卡在那里。快速修复方法是调整内部循环上的循环约束:

System.out.println ("Enter the solution to " + x + "+" + y + " or 100 to exit");

您是否尝试过在调试器中运行它(您的IDE应该提供一个调试器)以发现迭代行为哪里出了问题?我对代码进行了一些格式化以使其更具可读性。以后请在此表单中添加代码。您可以很容易地在IDE中获得它,比如Eclipse
Ctrl+Shift+F
,NeatBeans
Alt+Shift+F
不是解决方案,而是move
Scanner sc=new Scanner(System.in)在循环之前。
while (i != solution && i != 100)