初学者循环问题 - 而......做

时间:2013-09-20 21:26:27

标签: java loops while-loop do-while

程序的作用:从输入中读取两个值,询问用户是否添加,减去或查找产品。如果用户输入三个选项中的一个,则计算,否则程序将循环回到开头。如果用户输入三个选项之一,程序应在计算后停止。

我不确定为什么它继续循环。仅当用户键入“sum”,“difference”或“product”以外的字符串时,如何才能使脚本循环?另外,如何使代码更简单?有没有办法循环程序而不使用do ... while?

import java.util.Scanner;
import java.util.Random;

public class simp_calculator
{
  public static void main (String[] args)
  {
    Scanner scan = new Scanner (System.in);
    double a, b;
    String response;
    boolean noresponse;

    do
    {
      System.out.println ("Please enter first number.");
      a = scan.nextDouble();

      System.out.println ("Please enter second number.");
      b = scan.nextDouble();

      System.out.println ("Would you like to find the sum, difference, product?");
      response = scan.next();

      if (response.equalsIgnoreCase ("sum"))
      {
        System.out.println (a + b);
      }

      if (response.equalsIgnoreCase ("difference"))
      {
        System.out.println (a - b);
      }

      if (response.equalsIgnoreCase ("product"))
      {
        System.out.println (a * b);
      }

      else
      {
        noresponse = true; 
        System.out.println ("Starting again...");
      }

    }
    while (noresponse = true);

  }
}  

5 个答案:

答案 0 :(得分:3)

您正在使用分配运算符=,因此noresponse始终为true。因此,赋值表达式的结果为true

如果是true,您想检查,因此请使用比较运算符==

while (noresponse == true);

或者,因为它已经是boolean

while (noresponse);

此外,您可能会收到noresponse未初始化的编译器错误。您将需要确保它在所有情况下都已初始化,并且某些内容将其设置为false,以便循环最终结束。

答案 1 :(得分:2)

while (noresponse = true);更改为while (noresponse == true); =是一项作业操作 - 其中==比较。

答案 2 :(得分:1)

有两个问题:

  1. 目前您正在循环,而noreponse等于true。因此,要退出该循环,您需要在满足特定条件时将noresponse设置为false :)我可以给您答案,但您应该能够通过我给您的信息来解决它。 (提示:在某些时候,您需要将noresonse设置为false)。

  2. 此外,您将noresponse设置为相等,而不是比较它。您需要使用==进行比较。

  3. (noresponse = true);加入while (noresponse == true);

答案 3 :(得分:1)

两个错误:

  • else仅适用于最后一个if;所以对于任何值,“product”,noresponse变为true,循环继续。将第二个if替换为else if s。
  • noresponse应在循环开始时赋值false

答案 4 :(得分:0)

只需将while (reponse = true)更改为while(reponse)并命名变量..