-1

有人可以看看我的计算器,告诉我为什么在问我数字后它停止了,如果它添加 sub div 或 multi 但不打印结果,或者你想继续是或否,我想做什么。在此先感谢下面是我的代码

public static void main(String[] args) {



            Scanner sc = new Scanner(System.in);
            double a,b,c;
            int choice = 0;
            a=b=c=0.0;
            while(true) {
              System.out.println("Enter two numbers");
              a = Double.parseDouble(sc.nextLine());
              b = Double.parseDouble(sc.nextLine());

              System.out.println("Enter your choice");
              System.out.println("1. Add");
              System.out.println("2. Sub");
              System.out.println("3. Mul");
              System.out.println("4. Div");

              choice = Integer.parseInt(sc.nextLine());

              switch(choice) {
               case 1 :
                      c = new Add().doMath(a,b);
                      break;
               case 2 :
                      c = new Sub().doMath(a,b);
                      break;
               case 3 :
                      c = new Div().doMath(a,b);
                      break;
               case 4 :
                      c = new Mul().doMath(a,b);
                      break;
               default:
                       break;

               }

              System.out.println(c + "this is the answere");


              System.out.println("would you like to continue? (Y/N)");
              if("N".equalsIgnoreCase(sc.nextLine())) { // careful with the paranthesis 
                break;
              }
            }





}




}

interface MathOp {
public double doMath(double a, double b);
}

class Add implements MathOp{

  public double doMath(double a, double b) {
    return (a + b);
  }

}

class Sub implements MathOp{

  public double doMath(double a, double b) {
    return (a - b);
  }

}
class Div implements MathOp{

    public double doMath(double a, double b){
        return (a / b);
    }
}
class Mul implements MathOp{

    public double doMath(double a, double b){
        return (a * b);
    }
}
4

3 回答 3

1

choice在不Integer。它是int

对于数学问题,我更喜欢 BigDecimal 类!

这是链接!

于 2013-09-28T09:12:30.620 回答
1

当你写sc.nextLine()它时,要求输入。所以你必须输入两个值,比如 value1 然后[press enter]然后是第二个值然后[press enter]。然后它将显示您的选择。

更改以获得更好的输入,例如

System.out.println("Enter numbers one");
              a = Double.parseDouble(sc.nextLine());
 System.out.println("Enter number two");
              b = Double.parseDouble(sc.nextLine());
于 2013-09-28T09:09:44.420 回答
0

您将无法获得所需的输出,因为您选择3了除法代码,但在菜单中显示选择3用于乘法

这是完整的代码

import java.util.Scanner;


public class test12 {

    public static void main(String[] args) {



        Scanner sc = new Scanner(System.in);
        double a,b,c;
        int choice = 0;
        a=b=c=0.0;
        while(true) {
          System.out.println("Enter two numbers");
          a = Double.parseDouble(sc.nextLine());
          b = Double.parseDouble(sc.nextLine());

          System.out.println("Enter your choice");
          System.out.println("1. Add");
          System.out.println("2. Sub");
          System.out.println("3. Div");
          System.out.println("4. Mul");

          choice = Integer.parseInt(sc.nextLine());

          switch(choice) {
           case 1 :
                  c = new Add().doMath(a,b);
                  break;
           case 2 :
                  c = new Sub().doMath(a,b);
                  break;
           case 3 :
                  c = new Div().doMath(a,b);
                  break;
           case 4 :
                  c = new Mul().doMath(a,b);
                  break;
           default:
                   break;

           }

          System.out.println(c + " this is the answere");


          System.out.println("would you like to continue? (Y/N)");
          if("N".equalsIgnoreCase(sc.nextLine())) { // careful with the paranthesis 
            break;
          }
        }





}




}

interface MathOp {
public double doMath(double a, double b);
}

class Add implements MathOp{

public double doMath(double a, double b) {
return (a + b);
}

}

class Sub implements MathOp{

public double doMath(double a, double b) {
return (a - b);
}

}
class Div implements MathOp{

public double doMath(double a, double b){
    return (a / b);
}
}
class Mul implements MathOp{

public double doMath(double a, double b){
    return (a * b);
}

}

输出 在此处输入图像描述

于 2013-09-28T09:17:32.493 回答