1

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

我不确定为什么它一直在循环。仅当用户键入“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);

  }
}  
4

5 回答 5

3

您正在使用赋值运算符=,所以noresponse将始终是true。因此赋值表达式的结果是true

你想检查它是否是true,所以使用比较运算符==

while (noresponse == true);

或者,因为它已经是boolean

while (noresponse);

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

于 2013-09-20T21:28:02.847 回答
2

更改while (noresponse = true);while (noresponse == true);.
=是一个赋值操作 - 作为==比较。

于 2013-09-20T21:27:56.243 回答
1

两个错误:

  • else仅适用于最后一个 if ;因此,对于除“产品”之外的任何价值,都noresponse将成为true并且循环继续。用 s替换if从第二个开始的所有else ifs。
  • noresponse应该false在循环开始时给定值。
于 2013-09-20T21:30:08.623 回答
1

有2个问题:

  1. 当前,您正在循环 whilenoreponse等于 true。因此,要退出该循环,您需要在noresponse满足特定条件时设置为 false :) 我可以给您答案,但是您应该能够根据我给您的信息弄清楚。(提示:在某些时候您需要设置noresonse为 false)。

  2. 此外,您设置noresponse为相等,而不是比较它。你需要用来==比较。

所以make while (noresponse = true);into while (noresponse == true);.

于 2013-09-20T21:28:25.200 回答
0

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

于 2014-04-23T00:09:29.367 回答