【问题标题】:While Loops JavaWhile循环Java
【发布时间】:2018-07-07 14:44:59
【问题描述】:

我需要根据用户的响应创建一个无限循环,但是,我在 while 循环之后一直卡住。对我来说,我似乎只需要复制/粘贴我之前的代码,因为它会生成一个新问题供用户回复。有人可以给我一些见解和/或材料让我阅读以更好地理解吗?

import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    // Create Scanner object for user input
    Scanner input = new Scanner(System.in);

    // Declare variable for number of questions correct
    int correctQuestions = 0;

    // Declare variable for number of questions overall
    int overallQuestions = 0;

      // Generate two random single-digit integers for math equation
      int number1 = (int) (Math.random() * 10);
      int number2 = (int) (Math.random() * 10);

      // If number1 < number2, swap number 1 with number2
      if(number1 < number2){
          int temp = number1;
          number1 = number2;
          temp = number2;
    }
    // Ask the user to answer the mathematical questions 
    System.out.print("What is " + number1 + " x " + number2 + "?");
    int answer = input.nextInt();

    if(number1 * number2 == answer){
        System.out.print("Correct. You are a genius!");
        correctQuestions++;
        overallQuestions++;
    }
    else
        System.out.print("Sorry, looks like you'll have to try again");

    while(number1 * number2 == answer ^ number1 * number2 != answer)
        System.out.print("Would you like to try another question ? ");
    String response = input.nextLine();

    if(response == "y"){
            // Generate two random single-digit integers for math equation
          int number1 = (int) (Math.random() * 10);
          int number2 = (int) (Math.random() * 10);

          // If number1 < number2, swap number 1 with number2
          if(number1 < number2){
              int temp = number1;
              number1 = number2;
              temp = number2;
         }
    // Ask the user to answer the mathematical questions 
    System.out.print("What is " + number1 + " x " + number2 + "?");
    int answer = input.nextInt();

    if(number1 * number2 == answer){
        System.out.print("Correct. You are a genius!");
        correctQuestions++;
        overallQuestions++;
    }
    else
        System.out.print("Sorry, looks like you'll have to try again");
    }

    }
}

【问题讨论】:

  • 现在是了解 IDE 中调试器的好时机
  • 我正在查看调试器,但我很困惑为什么它说变量已经被声明。我是否必须为每个被问到的问题创建一个新变量? Main.java:44:错误:变量 number1 已在方法 main(String[]) int number1 = (int) (Math.random() * 10) 中定义;
  • 不要用==来比较Strings!
  • int answer =有两种用法...第二种只需answer =
  • 你想用这条线达到什么目的:number1 * number2 == answer ^ number1 * number2 != answer?

标签: java loops while-loop infinite-loop


【解决方案1】:

像这样完全更新您的代码

// Create Scanner object for user input
Scanner input = new Scanner(System.in);

// Declare variable for number of questions correct
int correctQuestions = 0;

// Declare variable for number of questions overall
int overallQuestions = 0;

// Generate two random single-digit integers for math equation
int number1 = (int) (Math.random() * 10);
int number2 = (int) (Math.random() * 10);

// If number1 < number2, swap number 1 with number2
if(number1<number2)
{
    int temp = number1;
    number1 = number2;
    number2=temp;
}//if 


while(true)
{
    System.out.print("What is " + number1 + " x " + number2 + "?");
    int answer = input.nextInt();
    overallQuestions++;
    if(number1*number2 == answer)
    {
        System.out.println("you are correct");
        correctQuestions++;

        break;
    }
    else
    {
        System.out.println("sorry.. looks like you have to do whatever");
        System.out.println("would you like to do another crap put y for yep and n for nop");
        String response = input.next();

        if(response.equals("y"))
        {
            continue;
        }
        else if(response.equals("n"))
        {
            break;
        }

    }
}


System.out.println("overall questions:"+ overallQuestions + " correct ones:" + correctQuestions);

【讨论】:

  • 使用 == "y" 和 response.equals("y") 有什么区别?
  • 没有 =="y"。 string 是一个对象而不是一个值,所以它有自己的方法,其中之一是 .equals() 所以你不应该使用 =="y" 作为字符串对象
  • 如果您对答案感到满意,如果您将我的帖子作为答案并对其进行评分,那将非常高兴。谢谢
【解决方案2】:

首先确定您是否已实施所需项目的所有方面。一般来说,一旦完成,您将有几个选项来构建项目。在这种情况下,您希望程序继续运行,直到用户退出。因此,请检查您是否有任何变量表明他们的决定。如果是这样,带有条件检查该变量的特定值的循环将运行良好。

需要提及的几件事

几个变量被声明了两次。如果它们需要是单独的变量,则需要分配新的变量名称。否则,它们不需要声明两次,只需记住在再次使用它们之前将值设置为初始起点即可。

另外,我强烈建议在条件语句后使用方括号。这是个人喜好,但更容易判断哪些条件适用于哪些代码。

【讨论】:

    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2010-11-26
    • 2014-03-29
    • 2021-03-27
    • 2020-11-26
    相关资源
    最近更新 更多