有什么方法可以在 System.out.println(此处); 中迭代汽车吗? //(我想解释的是在我的代码之后写的。)
Is there any way to iterate a var in- System.out.println(here);? //(what Im tryina explain is written after my code.)
我正在尝试使用数组和 switch Case 创建一个计算器。
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 nums bcz [f] 和 [f+1];
//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:
4
1 : 6
Operator: +
2 : 5
Operator: -
3 : 2
Operator: *
4 : 5
Operator: =
Calculating...
11
3
10
我的代码一次只计算 2 个数字,但我希望它计算数组的所有元素并只打印 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] 处的 right-hand 操作数。然后该结果成为下一个操作的 left-hand 操作数。
如果您希望保持 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
变量来存储之前的结果。
我正在尝试使用数组和 switch Case 创建一个计算器。
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 nums bcz [f] 和 [f+1];
//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:
4
1 : 6
Operator: +
2 : 5
Operator: -
3 : 2
Operator: *
4 : 5
Operator: =
Calculating...
11
3
10
我的代码一次只计算 2 个数字,但我希望它计算数组的所有元素并只打印 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] 处的 right-hand 操作数。然后该结果成为下一个操作的 left-hand 操作数。
如果您希望保持 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
变量来存储之前的结果。