Java 如何使用连续的用户输入更新输出,直到以“结束”&引用;?
Java新手,试图弄清楚如何保持用户给出的计算表达式持续运行,直到他们键入“.”终止它,然后打印输出。我需要使用我已经放置的main之外的方法。我不必担心操作顺序,但我不知道如何在跟踪其输出的同时进行连续的操作/数字,然后在放置“”时最终打印结果 输出: 输入表达式:Java 如何使用连续的用户输入更新输出,直到以“结束”&引用;?,java,if-statement,math,methods,operators,Java,If Statement,Math,Methods,Operators,Java新手,试图弄清楚如何保持用户给出的计算表达式持续运行,直到他们键入“.”终止它,然后打印输出。我需要使用我已经放置的main之外的方法。我不必担心操作顺序,但我不知道如何在跟踪其输出的同时进行连续的操作/数字,然后在放置“”时最终打印结果 输出: 输入表达式: 1 + 26 * 2 % 19 / 5 . 结果是3个类似于: while(expression!='.'){ if (expression == '+') { add(num1, num2); } e
1
+
26
*
2
%
19
/
5
.
结果是3个类似于:
while(expression!='.'){
if (expression == '+') {
add(num1, num2);
} else if (expression == '-') {
subtract(num1, num2);
} else if (expression == '*') {
multiply(num1, num2);
}else if (expression == '/') {
divide(num1, num2);
} else if (expression == '%') {
modulus(num1, num2);
}
}
这就是你要问的吗?我建议从“0+”开始,然后是用户输入的内容。因为你不需要对第一个数字进行特殊处理
import java.util.Scanner;
class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter the expression: ");
// Start with "0 +"
int value = 0;
String operator = "+";
while (true) // loop
{
int operand = scan.nextInt();
switch (operator)
{
case "+": value += operand; break;
case "-": value -= operand; break;
case "*": value *= operand; break;
case "/": value /= operand; break;
case "%": value %= operand; break;
default: throw new UnsupportedOperationException(operator);
}
operator = scan.next();
if (".".equals(operator))
{
break; // exit the loop
}
}
System.out.println("result=" + value);
scan.close();
}
}
然而,该算法不关心算子顺序的数学规则。它只是像一个便宜的3欧元袖珍计算器一样从左到右处理输入
基于if-else构造和方法的其他示例:
import java.util.Scanner;
class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter the expression: ");
// Start with "0 +"
int value = 0;
char operator = '+';
while (true) // loop
{
int operand = scan.nextInt();
if (operator == '+') {
value=add(value, operand);
} else if (operator == '-') {
value=subtract(value, operand);
} else if (operator == '*') {
value=multiply(value, operand);
} else if (operator == '/') {
value=divide(value, operand);
} else if (operator == '%') {
value=modulus(value, operand);
} else {
throw new UnsupportedOperationException(String.valueOf(operator));
}
operator = scan.next().charAt(0);
if (operator=='.')
{
break; // exit the loop
}
}
System.out.println("result=" + value);
scan.close();
}
static int add(int num1, int num2) {
return (num1 + num2);
}
static int subtract(int num1, int num2) {
return (num1 - num2);
}
static int divide(int num1, int num2) {
return (num1/num2);
}
static int multiply(int num1, int num2) {
return (num1*num2);
}
static int modulus(int num1, int num2) {
return (num1%num2);
}
}
对谢谢但现在,当我输入用户输入的例如“2+4-1”时,它不会打印出结果。我该怎么做呢?这很好,但是当使用我从main中添加的方法时,有没有办法做到这一点呢?当然你可以编写
case“+”:value=add(value,operand);中断代码>甚至使用if-else构造。但是别忘了将操作结果存储在变量value
中。那么我应该在哪里添加if-else构造呢?switch构造是否已经考虑了if-else所做的工作?我按照您提到的那样进行了编辑,并在我的方法中添加了内容,但现在它在java.base/java.util.Scanner.throwFor(Scanner.java:939)的java.base/java.util.Scanner.next(Scanner.java:1594)中的线程“main”java.util.InputMismatchException中表示异常位于java.base/java.util.Scanner.nextInt(Scanner.java:2258)处的java.base/java.util.Scanner.nextInt(Scanner.java:2212)处的Main.Main(Evaluate.java:17)
import java.util.Scanner;
class Main
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Enter the expression: ");
// Start with "0 +"
int value = 0;
char operator = '+';
while (true) // loop
{
int operand = scan.nextInt();
if (operator == '+') {
value=add(value, operand);
} else if (operator == '-') {
value=subtract(value, operand);
} else if (operator == '*') {
value=multiply(value, operand);
} else if (operator == '/') {
value=divide(value, operand);
} else if (operator == '%') {
value=modulus(value, operand);
} else {
throw new UnsupportedOperationException(String.valueOf(operator));
}
operator = scan.next().charAt(0);
if (operator=='.')
{
break; // exit the loop
}
}
System.out.println("result=" + value);
scan.close();
}
static int add(int num1, int num2) {
return (num1 + num2);
}
static int subtract(int num1, int num2) {
return (num1 - num2);
}
static int divide(int num1, int num2) {
return (num1/num2);
}
static int multiply(int num1, int num2) {
return (num1*num2);
}
static int modulus(int num1, int num2) {
return (num1%num2);
}
}