Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java构建计算器(带开关)_Java - Fatal编程技术网

用java构建计算器(带开关)

用java构建计算器(带开关),java,Java,我用一个开关来计算两个数字,但当我尝试做任何类型的运算时,我总是得到0 //imports import java.util.Scanner; public class Calculator { public static void main (String[] args) { //get first number Scanner scan = new Scanner(System.in); System.out.println("Please ent

我用一个开关来计算两个数字,但当我尝试做任何类型的运算时,我总是得到
0

//imports
import java.util.Scanner;
public class Calculator {
      public static void main (String[] args) {
//get first number
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter the first number: > ");
        int num1 = scan.nextInt();
// get second number
        System.out.println("Please enter the second number: > ");
        int num2 = scan.nextInt();
// what the user wants to do
        System.out.println("Please enter the method you would like to use "
                + "(+ , - , * , / , ^ ) > " );
        String method = scan.next();
        char operation = method.charAt(0);
        String output = "";
//switch for first number
        switch(num1) {
                case 0: output+= "zero";
                        break;
                case 1: output+= " one";
                        break;
                case 2: output+= " two";
                        break;
                case 3: output+= " three";
                        break;
                case 4: output+= " four";
                        break;
                case 5: output+= " five";
                        break;
                case 6: output+= " six";
                        break;
                case 7: output+= " seven";
                        break;
                case 8: output+= " eight";
                        break;
                case 9: output+= " nine";
                        break;
                case 10: output+= " ten";
                        break;
}
// operation the user wants to use
      switch (operation){
          case '+' : output += " plus";
                     break;
          case '-' : output += " minus";
                     break;
          case '*' : output += " times";
                     break;
          case '/' : output += " divided by";
                     break;
          case '^' : output += " to the power of";
                     break;
}
//switch for second number
       switch (num2) {
               case 0: output += " zero";
                       break;
               case 1: output += " one";
                       break;
               case 2: output += " two";
                       break;
               case 3: output += " three";
                       break;
               case 4: output += " four";
                       break;
               case 5: output += " five";
                       break;
               case 6: output += " six";
                       break;
               case 7: output += " seven";
                       break;
               case 8: output += " eight";
                       break;
               case 9: output += " nine";
                       break;
               case 10: output += " ten";
                       break;
// calculate the answer
        }
          int answer = 0 ;
       switch (answer) {
           case '+' : answer = (answer + (num1 + num2));
               break;
           case '-' : answer = (answer + (num1 - num2));
               break;
           case '*' : answer = (answer + (num1 * num2));
               break;
           case '/' : answer = (answer + (num1 / num2));
               break;
           case '^' : answer = (answer + (int) (Math.pow(num1,num2) ));
               break;
       }
       System.out.println(output + " equals " + answer );
    }
}
我很确定我的问题在程序的底部,实际的功能

 int answer = 0 ;
       switch (answer) {
从那个地区的某个地方开始,只是很难弄清楚。也许其他人可以提供我做错了什么的信息

提前谢谢你的帮助

   int answer = 0 ;
   switch (answer) {
没有任何意义,您正在打开
0
(硬编码)并且没有相关案例


打开
操作
而不是你可能想做的

switch (operation) {
而不是

switch (answer) {

以下是正在发生的事情:

您正在将
0
分配给
answer
。然后:

  • 如果
    答案
    “+”
    ,请做第一件事
  • 如果
    答案
    '-'
    ,请执行其他操作
  • 如果
    答案
    “*”
    ,那么做第三件事
很明显,你可以看到这是荒谬的;唯一可能触发的情况是将
'\0'
(空字符)作为一种情况

似乎您想要打开
操作
,而不是
回答

您在说:

...
int answer = 0;
if(answer == '+'){
    ...
}
else if(answer ==  '-'){
    ...
}
else if(answer == '*'){
    ...
} ... 
我想这应该行得通:

   int answer = 0 ;
   switch (operation) {
       case '+' : answer = num1 + num2;
           break;
       case '-' : answer = num1 - num2;
           break;
       case '*' : answer = num1 * num2;
           break;
       case '/' : answer = num1 / num2;
           break;
       case '^' : answer = (int) Math.pow(num1,num2) ;
           break;
   }

你需要解释一下你的答案,只给出代码对任何人真正理解他们的错误都没有帮助。到底什么是“开关(4)”呢?
public class Calculator {
    public static void main(String args []){

        int x=10,y=5,add,sub,div,mul;

        switch (4) {
        case 1:
            add=x+y;
            System.out.print("add :"+add);
            break;
        case 2:
            sub=x-y;
            System.out.print("sub :"+sub);
            break;
        case 3:
            mul=x*y;
            System.out.print("mul:"+mul);
            break;
        case 4:
            div=x/y;
            System.out.print("div:"+div);           
        default:
            System.out.print("invailid");
        }
    }
}