简单的计算器代码编写
这几天在看狂神的java基础视频。当讲完三个基础结构之后,布置了一个 制作简易的计算器的 作业,不是很难,新手运用视频的知识就可以完成,只是比较复杂,需要耐心去编写。
代码如下:
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in); //创建输入对象,后续需要用户输入
String key="y"; //由于作业要求完成四则运算之后,需要用户来选择程序是否结束。
while(key.equals("y")) { // 使用字符串的equals方法,比较若是用户输入 y 则程序接着运行。
String opr = ""; //定义操作符
double num1 = 0, num2 = 0; //定义俩个操作数
double result = 0;
System.out.println("请输入第一个操作数");
if(scanner.hasNextDouble()){ //判断用户是否输入数字
num1 = scanner.nextDouble();
}else{
System.out.println("您输入的操作数有误,请输入正确的操作数");
num1=scanner.nextDouble();
}
System.out.println("请输入操作符( + 或 - 或 * 或 /)");
opr = scanner.next();
System.out.println("请输入第二个操作数");
if(scanner.hasNextDouble()){
num2 = scanner.nextDouble();
}else{
System.out.println("您输入的操作数有误,请输入正确的操作数");
num2=scanner.nextDouble();
}
switch (opr) { //选择运算类型
case "+":
System.out.println("您选择加法运算:");
result = add(num1, num2);
System.out.println("结果为:" + num1 + opr + num2 + "=" + result);
break;
case "-":
System.out.println("您选择减法运算:");
result = sub(num1, num2);
System.out.println("结果为:" + num1 + opr + num2 + "=" + result);
break;
case "*":
System.out.println("您选择乘法:");
result = mul(num1, num2);
System.out.println("结果为:" + num1 + opr + num2 + "=" + result);
break;
case "/":
if (num2 == 0) {
System.out.println("被除数不能为0");
} else {
System.out.println("您选择除法运算:");
result = div(num1, num2);
System.out.println("结果为:" + num1 + opr + num2 + "=" + result);
}
break;
default:
System.out.println("操作符错误,请输入正确的操作符"); //判断操作符并提示
break;
}
System.out.println("是否继续计算?(输入y继续,其他任意键退出)");
key = scanner.next();
}
System.out.println("感谢本次使用!");
scanner.close(); //关闭scanner管道
}
public static double add(double num1,double num2){ //简单的加法运算
return num1+num2;
}
public static double sub(double num1,double num2){ //简单的减法运算
return num1-num2;
}
public static double mul(double num1,double num2){ //简单的乘法运算
return num1*num2;
}
public static double div(double num1,double num2){ //简单的除法运算
return num1/num2;
}
}
这里面有几个点需要说明:
-
对于while循环里的 hasNextDouble()方法,是用来判断是否有输入流输入,如果有并且是double型,则进入while循环,若输入了却不是double型,则抛出异常结束此程序运行,此处应该还需要加try........catch语句来捕捉异常,但狂神还没有纤细讲解异常,所以此处以新手的角度来完成代码,故省略try......catch。
-
对于字符串变量来说,使用“==”和“equals()”方法比较字符串时,其比较方法不同。
“==”比较两个变量本身的值,即两个对象在内存中的首地址。 java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性
equals()”比较字符串中所包含的内容是否相同
-
对于scanner.close()方法:凡是属于io流的类,如果不关闭就会一直占用电脑资源,应该养成良好的习惯,使用close()方法,将其关闭。.
-
next()方法和hasNextLine()
:读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空白,next()方法会自动将其去掉,只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。 后者将是以回车键为结束符。