(下面有女朋友写的简单版的计算器,小白适用)
先上源码
package zxt.Reflection;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class calc {
public static void main(String[] args) {
System.out.println("欢迎使用计算器!请输入式子,以回车结束。");
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
double n1, n2;
String a1="";
String a2="";
String f = null;
List list = Arrays.asList(str.split(""));
for (String s : list) {
if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {
f = s;
} else if (f == null) {
a1 += s;
}else{
a2 += s;
}
}
n1 = Double.parseDouble(a1);
n2 = Double.parseDouble(a2);
iCalc ca;
switch (f) {
case "+":
ca = (double b1, double b2) -> { System.out.println(b1 + b2);};
ca.lambda(n1, n2);
break;
case "-":
ca = (double b1, double b2) -> { System.out.println(b1 - b2);};
ca.lambda(n1, n2);
break;
case "*":
ca = (double b1, double b2) -> { System.out.println(b1 * b2);};
ca.lambda(n1, n2);
break;
case "/":
ca = (double b1, double b2) -> { System.out.println(b1 / b2);};
ca.lambda(n1, n2);
break;
default:
System.out.println("你输入的式子不正确!");
}
}
}
@FunctionalInterface
interface iCalc {
void lambda(double a, double b);
}
示例:
Listlist = Arrays.asList(str.split(""));
将式子转成列表(这是个不可增删改查的列表,用于遍历)。
for (String s : list) {
if (s.equals("+") || s.equals("-") || s.equals("*") || s.equals("/")) {
f = s;
} else if (f == null) {
a1 += s;
}else{
a2 += s;
}
}
增强for循环遍历,变量f记录符号位,也作为标志位,检测是前一个数字还是后一个数字。
@FunctionalInterface
interface iCalc {
void lambda(double a, double b);
}
函数式接口,用于实现lambda表达式。
ca = (double b1, double b2) -> { System.out.println(b1 + b2);};
ca.lambda(n1, n2);
switch里四次实现的lambda表达式并调用。
简单版
(这个需要依次输入)
import java.util.Scanner;
public class Task_Calculator {
public static void main(String[] args) {
double result = 0;
System.out.println("请输入第一个数");
Scanner scanner = new Scanner(System.in);
double x = scanner.nextDouble();
System.out.println("请输入符号");
String fh = scanner.next();
System.out.println("请输入第二个数");
double y = scanner.nextDouble();
switch (fh) {
case "+":
result = x + y;
break;
case "-":
result = x - y;
break;
case "*":
result = x * y;
break;
case "/":
if (y == 0) {
System.out.println("除数不能为0!");
break;
} else {
result = x / y;
break;
}
default:
System.out.println("请输入正确的+-*/符号");
}
System.out.println("运算结果为"+result);
}
}



