有什么方法可以迭代var in- System.out.printlnhere;吗? //我的tryina解释的是在我的代码之后写的

问题描述

我正在尝试使用数组创建一个计算器并切换Case。

participants && participants.length === 1

我知道它将bnum [f]和[f + 1]加2个数字;

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;   
          }
       }
    }
}

想要这样的内容(注释部分),但不知道我们如何进行这样的迭代。

我想要的输出类似于...

    //System.out.println(for(int x=0;x<length;x++) 
    //{ 
    //System.out.println(num[f+x]);}); 
    how many numbers do you wanna perform operation on:
    4
    1 : 6
    Operator: +
    2 : 5
    Operator: -
    3 : 2
    Operator: *
    4 : 5
    Operator: =
    Calculating...
    45
//but the output i am getting is
how many numbers do you wanna perform operation on: 

我的代码仅计算2nums ata time,但是我希望它计算数组的所有元素并仅输出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;   
      }
   }

您不应在每个循环中打印,而应在循环中计算结果并在循环后打印最终结果。 像这样;

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]);
          }
       }

我们将每个操作的结果存储回num数组中,以代替位于num [f + 1]处的右侧操作数。然后,该结果将成为下一个操作的左侧操作数。

如果您希望保持num的原始内容不变,可以这样做:

       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);
          }
       }

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