简单的用户交互计算器
写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现
- 写 4 个方法:加减乘除
- 利用循环 + switch 进行用户交互
- 传递需要操作的两个数
- 输出结果
package com.flower.method;
import java.util.Scanner;
public class Demo06 {
static void main(String[] args) {
// 创建一个扫描器的对象,用于接受键盘数据
Scanner scanner = new Scanner(System.in);
System.out.println("========简易计算器========");
System.out.println("支持:+ - * / 运算,输入exit可退出程序");
while (true){
// 1.获取第一个数
System.out.println("请输入第一个数:");
// 判断是否输入数字
if (!scanner.hasNextDouble()){
// 存入数据
String input = scanner.next();
// 不区分大小写,如果相等,就退出程序
if ("exit".equalsIgnoreCase(input)) {
System.out.println("程序已退出!");
break;
}
System.out.println("输入无效,请重新输入数字:");
// 重新执行循环
continue;
}
// 获取第一个数字
double num1 = scanner.nextDouble();
System.out.println("请输入运算符:");
// 定义变量接收运算符
String input2;
// 判断运算符是否为空
if (scanner.hasNext()) {
// 2.获取输入
input2 = scanner.next();
// 判断退出程序
if ("exit".equalsIgnoreCase(input2)) {
System.out.println("程序已退出!");
break;
}
// 判断是否为运算符
if (!(("+".equals(input2) || "-".equals(input2)) || ("*".equals(input2) || "/".equals(input2)))) {
System.out.println("无效运算符!请输入 + - * / 中的一种");
//
// scanner.next();
continue;
}
} else {
System.out.println("无效运算符!请输入 + - * / 中的一种");
// scanner.next();
continue;
}
// 3.获取第二个数
System.out.println("请输入第二个数:");
if (!scanner.hasNextDouble()) {
// 存入数据
String input3 = scanner.next();
// 不区分大小写,如果相等,就退出程序
if ("exit".equalsIgnoreCase(input3)) {
System.out.println("程序已退出!");
break;
}
System.out.println("输入无效,请输入数字:");
// 清除错误输入
scanner.next();
// 重新执行循环
continue;
}
// 获取第二个数字
double num2 = scanner.nextDouble();
// 4.switch判断运算符类型
double result2;
// 判断需要进行的运算
switch (input2) {
case "+":
result2 = sum(num1,num2);
System.out.println(num1 + "+" + num2 + "=" +result2);
System.out.println("按exit退出!");
break;
case "-":
result2 = subtract(num1,num2);
System.out.println(num1 + "-" + num2 + "=" +result2);
System.out.println("按exit退出!");
break;
case "*":
result2 = multiply(num1,num2);
System.out.println(num1 + "*" + num2 + "=" +result2);
System.out.println("按exit退出!");
break;
case "/":
result2 = divide(num1,num2);
System.out.println(num1 + "/" + num2 + "=" +result2);
System.out.println("按exit退出!");
break;
default:
System.out.println("无效运算符!请输入 + - * / 中的一种");
System.out.println("按exit退出!");
}
}
// 关闭流
scanner.close();
}
// 加法功能方法
public static double sum(double... number) {
// 判断是否为空
if (number.length == 0) {
System.out.println("请重新输入:");
return 0;
}
// 初始化变量
double result = number[0];
// 循环相加
for (int i = 1; i < number.length; i++) {
result = result + number[i];
}
// 输出结果
// System.out.println(result);
// 返回结果
return result;
}
// 减法功能方法
public static double subtract(double... number) {
// 判断是否为空
if (number.length == 0) {
System.out.println("请重新输入:");
return 0;
}
// 初始化变量
double result = number[0];
for (int i = 1; i < number.length; i++) {
result = result - number[i];
}
// 输出结果
// System.out.println(result);
return result;
}
// 乘法功能方法
public static double multiply(double... number) {
// 判断是否为空
if (number.length == 0) {
System.out.println("请重新输入:");
return 0;
}
// 初始化变量
double result = number[0];
for (int i = 1; i < number.length; i++) {
if (number[i] == 0) {
System.out.println("0");
return 0;
} else {
result = result * number[i];
}
}
// 返回结果
// System.out.println(result);
return result;
}
// 除法功能方法
public static double divide(double... number) {
// 判断是否为空
if (number.length == 0) {
System.out.println("请重新输入:");
return 0;
}
// 初始化变量
double result = number[0];
for (int i = 1; i < number.length; i++) {
if (result == 0) {
System.out.println("0");
return 0;
} else if (number[i] == 0) {
System.out.println("0不能当除数!");
return Double.NaN;
} else {
result = result / number[i];
}
}
// 输出结果
// System.out.println(result);
// 返回结果
return result;
}
}


浙公网安备 33010602011771号