Java 控制台输入实现加减乘除
控制台输入是指在 Java 应用程序中,允许用户通过控制台输入信息来进行交互。Java 控制台输入可以通过 Scanner 类实现。为了通过控制台输入实现加减乘除操作,您需要使用 Scanner 类来扫描用户输入的数字和操作符,并根据操作符实现相应的操作。本文将从多个角度分析如何使用 Java 控制台输入来实现加减乘除。
实现过程
Java 控制台输入可以通过 Scanner 类实现。首先,您需要创建一个 Scanner 对象来扫描控制台输入。接下来,您可以使用 nextDouble 方法来扫描输入的数字,并使用 next 方法来扫描输入的操作符。最后,使用条件语句来根据操作符实现相应的操作。以下是一个示例代码:
```
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter first number: ");
double num1 = input.nextDouble();
System.out.print("Enter second number: ");
double num2 = input.nextDouble();
System.out.print("Enter an operator (+, -, *, /): ");
char operator = input.next().charAt(0);
double result;
switch(operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
System.out.println("Invalid operator.");
return;
}
System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
}
}
```
运行上述代码,应用程序将提示用户输入两个数字和一个操作符。根据用户输入的操作符,应用程序将实现相应的操作。
代码分析
在上述示例代码中,Scanner 类被用来扫描用户输入的数字和操作符。 nextDouble 方法通过控制台读取输入的数字。 next 方法通过控制台读取输入的操作符,并返回一个字符串。 charAt 方法用于获取字符串的第一个字符,因为只有一个操作符被输入。使用 switch 语句根据操作符执行相应的操作。
开发人员还可以使用异常处理来提高代码的健壮性。如果输入无效操作符或尝试使用除以零的操作,则应用程序应该抛出异常或输出错误消息。
```
try {
switch(operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if(num2 == 0) {
throw new ArithmeticException("Cannot divide by zero.");
}
result = num1 / num2;
break;
default:
throw new IllegalArgumentException("Invalid operator.");
}
System.out.println(num1 + " " + operator + " " + num2 + " = " + result);
} catch(ArithmeticException e) {
System.out.println(e);
} catch(IllegalArgumentException e) {
System.out.println(e);
}
```
注意,在除法操作中,需要添加一个条件来检查被除数是否为零。如果被除数为零,则应抛出一个运行时异常。
优化代码
在此基础上,我们可以考虑如何优化代码。我们可以将操作符定义为枚举类型,这样代码将变得更加可读并且更易于扩展。以下是一个示例代码:
```
import java.util.Scanner;
public class Calculator {
enum Operator {
ADD("+"),
SUBTRACT("-"),
MULTIPLY("*"),
DIVIDE("/");
String symbol;
Operator(String symbol) {
this.symbol = symbol;
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter first number: ");
double num1 = input.nextDouble();
System.out.print("Enter second number: ");
double num2 = input.nextDouble();
System.out.print("Enter an operator (+, -, *, /): ");
String symbol = input.next();
Operator operator = null;
for(Operator op : Operator.values()) {
if(op.symbol.equals(symbol)) {
operator = op;
break;
}
}
if(operator == null) {
System.out.println("Invalid operator.");
return;
}
double result;
switch(operator) {
case ADD:
result = num1 + num2;
break;
case SUBTRACT:
result = num1 - num2;
break;
case MULTIPLY:
result = num1 * num2;
break;
case DIVIDE:
if(num2 == 0) {
System.out.println("Cannot divide by zero.");
return;
}
result = num1 / num2;
break;
default:
System.out.println("Invalid operator.");
return;
}
System.out.println(num1 + " " + operator.symbol + " " + num2 + " = " + result);
}
}
```
在此代码中,操作符定义为一个枚举类型。枚举类型实际上是一种特殊的类,它限制了可选值,并将这些值定义为类的常量。在此代码中,我们还定义了一个表示操作符的 symbol 字段。此字段作为枚举类型的构造函数参数进行初始化。 symbol 字段将用于在输出时显示操作符。
在执行运算之前,我们使用循环迭代枚举类型中的所有操作符,找到与用户输入的操作符匹配的操作符。如果未找到匹配项,则输出一条错误消息。
代码
扫码咨询 领取资料