0

我编写了以下程序,但对问题的 b 部分感到困惑。问题是 - 编写一个程序来计算简单的表达式,例如 17 + 3 和 3.14159 * 4.7。表达式由用户输入。输入总是由一个数字组成,后跟一个运算符,然后是另一个数字。允许的运算符是 +、-、* 和 /。您不需要在此处执行数据验证,因为它将在下面的部分 (b) 中完成。您的程序输出必须显示与结果一起输入的表达式(例如 17 + 3 = 20)。

B 部分:修改上面 (a) 部分中的程序以验证输入的操作员。该程序重复输入,直到输入有效的运算符。您需要使用验证方法。

这是我写的

import java.util.Scanner;
public class JavaCalculator
{
     public static void main(String[] args)
   {
       Scanner console = new Scanner(System.in);
       double digit1;
       double digit2;
       double total;
       String operator1; 

       System.out.print("Enter 1st number: ");
       digit1 = console.nextDouble();

       System.out.print("Enter the operator: ");
       operator1=console.next();    

       System.out.print("Enter 2nd number: ");
       digit2 = console.nextDouble();

        if (operator1.equals("-"))
      {
        total = digit1-digit2;
        System.out.println(+digit1+ "-" +digit2+ "=" +total);
      }
      else if (operator1.equals("+"))
      {
        total = digit1+digit2;
        System.out.println(+digit1+ "+" +digit2+ "=" +total);
      }
      else if (operator1.equals("*"))
      {
        total = digit1*digit2;
        System.out.println(+digit1+ "*" +digit2+ "=" +total);
      }
      else if (operator1.equals("+"))
      {
        total = digit1/digit2;
        System.out.println(+digit1+ "/" +digit2+ "=" +total);
      }

     }

}

刚开始使用Java,请在这个问题上容忍我或无知。我应该从哪一行开始 B 部分以验证操作员?

4

2 回答 2

1

在这里,我重写了您的代码。我希望这能满足您的期望。

 public static void main(String[] args)  {
   Scanner console = new Scanner(System.in);
   double digit1;
   double digit2;
   double total;
   String operator = ""; 
   boolean repeatFlag = true;
   while(repeatFlag)   {
     System.out.print("Enter a valid operator(+, -, /, *): ");
     operator = console.next();
   if(!(operator.equals("+") || 
          operator.equals("-") || operator.equals("/") || operator.equals("*"))) 
     {
    repeatFlag=true;
    continue;
     }
        repeatFlag = false;
   }

   System.out.print("Enter 1st number: ");
   digit1 = console.nextDouble();
   System.out.print("Enter 2nd number: ");
   digit2 = console.nextDouble();

  if (operator.equals("-"))
  {
    total = digit1-digit2;
    System.out.println(+digit1+ "-" +digit2+ "=" +total);
  }
  else if (operator.equals("+"))
  {
    total = digit1+digit2;
    System.out.println(+digit1+ "+" +digit2+ "=" +total);
  }
  else if (operator.equals("*"))
  {
    total = digit1*digit2;
    System.out.println(+digit1+ "*" +digit2+ "=" +total);
  }
  else if (operator.equals("/"))
  {
    total = digit1/digit2;
    System.out.println(+digit1+ "/" +digit2+ "=" +total);
  }

 }
于 2013-08-26T07:04:26.693 回答
0

有什么令人困惑的地方?它是有效的运营商部分吗?如果是这样,您可以使用一个循环,直到输入是有效的运算符之一。像这样的东西:

Scanner console = new Scanner(System.in);
double digit1 = console.nextDouble();
String operator1;
boolean nonValidOperator = true;
while(nonValidOperator){
  operator1 = console.next();
  if(operator1.equals("-"){
    nonValidOperator = false; // so the program continues
  }else if(operator1.equals("+"){
    nonValidOperator = false;
  }
}
double digit2 = console.nextDouble();

if(operator1.equals("-"){
  System.out.println(digit1-digit2);
}else if(operator1.equals("+"){
  System.out.println(digit1+digit2);
}

这样循环就在操作员部分,直到用户输入您的有效操作员之一

于 2013-08-26T06:18:42.880 回答