Java 是否有任何方法可以迭代变量in-System.out.println(此处)//(我试图解释的内容是在我的代码之后编写的。)

Java 是否有任何方法可以迭代变量in-System.out.println(此处)//(我试图解释的内容是在我的代码之后编写的。),java,arrays,for-loop,calculator,Java,Arrays,For Loop,Calculator,我正在尝试使用数组和开关盒创建一个计算器 public class test1 { public static void main(String[] args) { int length; Scanner input = new Scanner(System.in); System.out.println("how many numbers do you wanna perform operation on: ");

我正在尝试使用数组和开关盒创建一个计算器

public class test1 {
    public static void main(String[] args) {
       int length;
       Scanner input = new Scanner(System.in);
       System.out.println("how many numbers do you wanna perform operation on: ");
       length = input.nextInt();
       
       int[] num = new int[length];
       char[] op = new char[length];
       
       for (int counter = 0; counter < length; counter++) {
          System.out.print((counter + 1) + " : ");
          num[counter] = input.nextInt();
          System.out.print("Operator: ");
          op[counter] = input.next().charAt(0);
       }
       
       System.out.println("Calculating...");
       for (int f = 0; f < length; f++) {
          switch (op[f]) {
             case '+': System.out.println(num[f] + num[f + 1]); break; 
             case '-': System.out.println(num[f] - num[f + 1]); break;
             case '*': System.out.println(num[f] * num[f + 1]); break;
             case '/': System.out.println(num[f] / num[f + 1]); break;   
          }
       }
    }
}

我的代码只计算2个ata时间,但我希望它计算数组的所有元素,并只打印1个答案。是否可能???

您只需更改最后一个for语句:

   for (int f = 0; f < length; f++) {
      switch (op[f]) {
         case '+': System.out.println(num[f] + num[f + 1]); break; 
         case '-': System.out.println(num[f] - num[f + 1]); break;
         case '*': System.out.println(num[f] * num[f + 1]); break;
         case '/': System.out.println(num[f] / num[f + 1]); break;   
      }
   }
for(int f=0;f
您不应该在每个循环中打印,而是应该在循环中计算结果,并在循环后打印最终结果。 像这样,

double result=num[0];
for (int f = 0; f < length; f++) {
      switch (op[f]) {
         case '+': result+= num[f + 1]; break; 
         case '-': result-= num[f + 1]; break;
         case '*': result*= num[f + 1]; break;
         case '/': result/= num[f + 1]; break;   
      }
   }
System.out.println(result);
double result=num[0];
对于(int f=0;f
您的问题是,以后的计算没有包含以前计算的结果。有很多方法可以解决这个问题。这里有一种方法不需要你改变很多事情:

       System.out.println("Calculating...");
       for (int f = 0; f < length; f++) {
          switch (op[f]) {
             case '+': num[f+1] = num[f] + num[f + 1]; break; 
             case '-': num[f+1] = num[f] - num[f + 1]; break;
             case '*': num[f+1] = num[f] * num[f + 1]; break;
             case '/': num[f+1] = num[f] / num[f + 1]; break;
             case '=': System.out.println("Result: " + num[f]);
          }
       }

这里我们使用一个单独的
result
变量来存储以前的结果。

提示:如果每次都不打印对
num[f]
num[f+1]
进行操作的结果,而是将该结果存储回
num[f+1]
?然后在最后打印出
num[num.length-1]
。我没有收到。你能给我写一个简短的代码吗?非常感谢。谢谢好的,一个问题解决了,但这只计算最后两个数字。我想让它计算所有元素,然后打印最终结果value@AnsafGhani是我的错。我编辑答案以计算所有元素。num[0]表示什么@haoyu wang
num[0]
是num数组的第一个元素。您还可以告诉我如何输入浮点值来代替
int
。声明中出现错误
[length]
    4
    1 : 6
    Operator: +
    2 : 5
    Operator: -
    3 : 2
    Operator: *
    4 : 5
    Operator: =
    Calculating...
    11
    3
    10
   for (int f = 0; f < length; f++) {
      switch (op[f]) {
         case '+': System.out.println(num[f] + num[f + 1]); break; 
         case '-': System.out.println(num[f] - num[f + 1]); break;
         case '*': System.out.println(num[f] * num[f + 1]); break;
         case '/': System.out.println(num[f] / num[f + 1]); break;   
      }
   }
double result=num[0];
for (int f = 0; f < length; f++) {
      switch (op[f]) {
         case '+': result+= num[f + 1]; break; 
         case '-': result-= num[f + 1]; break;
         case '*': result*= num[f + 1]; break;
         case '/': result/= num[f + 1]; break;   
      }
   }
System.out.println(result);
       System.out.println("Calculating...");
       for (int f = 0; f < length; f++) {
          switch (op[f]) {
             case '+': num[f+1] = num[f] + num[f + 1]; break; 
             case '-': num[f+1] = num[f] - num[f + 1]; break;
             case '*': num[f+1] = num[f] * num[f + 1]; break;
             case '/': num[f+1] = num[f] / num[f + 1]; break;
             case '=': System.out.println("Result: " + num[f]);
          }
       }
       System.out.println("Calculating...");
       int result = num[0];
       for (int f = 0; f < length; f++) {
          switch (op[f]) {
             case '+': result = result + num[f + 1]; break; 
             case '-': result = result - num[f + 1]; break;
             case '*': result = result * num[f + 1]; break;
             case '/': result = result / num[f + 1]; break;
             case '=': System.out.println("Result: " + result);
          }
       }