【问题标题】:How to replace the while loop with a for loop?如何用 for 循环替换 while 循环?
【发布时间】:2021-10-15 03:18:15
【问题描述】:

// 如何用 for 循环替换 while 循环并产生相同的结果? 如何用 for 循环替换 while 循环并产生相同的结果? 如何用for循环替换while循环并产生相同的结果?如何用for循环替换while循环并产生相同的结果?如何用for循环替换while循环并产生相同的结果?如何做你用for循环替换while循环并产生相同的结果?如何用for循环替换while循环并产生相同的结果?如何用for循环替换while循环并产生相同的结果? //

导入 java.util.Scanner;

public class SubtractionQuizLoop {
  public static void main(String[] args) {
    final int NUMBER_OF_QUESTIONS = 5; // Number of questions
    int correctCount = 0; // Count the number of correct answers
    int count = 0; // Count the number of questions
    long startTime = System.currentTimeMillis();
    String output = ""; // output string is initially empty
    Scanner input = new Scanner(System.in);
    
    while (count < NUMBER_OF_QUESTIONS) {
      // 1. Generate two random single-digit integers
      int number1 = (int)(Math.random() * 10);
      int number2 = (int)(Math.random() * 10);

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

      // 3. Prompt the student to answer "What is number1 – number2?"
      System.out.print(
        "What is " + number1 + " - " + number2 + "? ");
      int answer = input.nextInt();

      // 4. Grade the answer and display the result
      if (number1 - number2 == answer) {
        System.out.println("You are correct!\n");
        correctCount++;
      }
      else
        System.out.println("Your answer is wrong.\n" + number1 
          + " - " + number2 + " should be " + (number1 - number2) + "\n");

      // Increase the count
      count++;

      output += "\n" + number1 + "-" + number2 + "=" + answer + 
        ((number1 - number2 == answer) ? " correct" : " wrong");
    }

    long endTime = System.currentTimeMillis();
    long testTime = endTime - startTime;

    System.out.println("Correct count is " + correctCount + 
      "\nTest time is " + testTime / 1000 + " seconds\n" + output);
  }
}

【问题讨论】:

  • 与其一再重复你的问题,请描述你尝试了什么,你对这两个循环的了解,你的尝试以何种方式失败。实际上,您的帖子惹恼潜在回答者的可能性要高于获得答案的可能性。
  • 查看stackoverflow.com/editing-help 以便正确格式化代码的第一行。获取tour 并阅读How to Ask 以提高您发布有用反馈的机会。
  • 您使用了while 循环基本上从0 计数到刚好低于NUMBER_OF_QUESTIONS。究竟是什么让您无法使用for 循环来做到这一点?可以通过遵循任何有关循环的教程来解决这个问题吗?还是借助教科书中相应章节的帮助?

标签: for-loop while-loop


【解决方案1】:

我通常使用这个:

for (int count = 0; count < NUMBER_OF_QUESTIONS; count++) {
  // your loop code
}

使用 for 循环,您创建一个名为 count 的变量,并将其初始化为 0。然后使用 count &lt; NUMBER_OF_QUESTIONS,您可以在计数等于 NUMBER_OF_QUESTIONS 时退出此循环。 count++ 自动增加 count 的值,因此您可以从循环代码中删除该语句。

你最终会得到类似的东西:

        for (int i = 0; i < NUMBER_OF_QUESTIONS; i++) {
          // 1. Generate two random single-digit integers
          int number1 = (int)(Math.random() * 10);
          int number2 = (int)(Math.random() * 10);
    
          // 2. If number1 < number2, swap number1 with number2
          if (number1 < number2) {
            int temp = number1;
            number1 = number2;
            number2 = temp;
          }
    
          // 3. Prompt the student to answer "What is number1 – number2?"
          System.out.print(
            "What is " + number1 + " - " + number2 + "? ");
          int answer = input.nextInt();
    
          // 4. Grade the answer and display the result
          if (number1 - number2 == answer) {
            System.out.println("You are correct!\n");
            correctCount++;
          }
          else
            System.out.println("Your answer is wrong.\n" + number1 
              + " - " + number2 + " should be " + (number1 - number2) + "\n");
    
          // Note that we do not use count++ here; it's moved to the for loop statement

          output += "\n" + number1 + "-" + number2 + "=" + answer + 
            ((number1 - number2 == answer) ? " correct" : " wrong");
        }

【讨论】:

    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2019-09-13
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 2011-03-26
    相关资源
    最近更新 更多