/**
* 这是一个升级版简易计算器:同样只支持从左到右的运算
* 这里简化了 一些循环 和增加了 输入判断 错误输出红色警告
* hasNextInt 判断缓冲是否有整数 有整数就返回 true 否则 false
* hasNextInt 缓冲区没有数据的时候就会等待,直到缓冲区有数据
* mScanner.next();这个方法就是如果用户输入了非数字,则缓冲区的数字拿出来
*
* mScanner.hasNextint() 这时缓冲区的数据就空了, 又会进入等待用户输入状态
*
* 程序员:佘长庚
*/
package com.xykj.calculator;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
float numA = 0;
float numB = 0;
String operatot = ""; //运算符
String recordOperatot = " "; //记录运算符
float swop = 0; //交换值
float resultTotal = 0; //计算结果
String accumulativeNum = "";
int isGo = 1;
Scanner mScanner = new Scanner(System.in);
System.out.println("************欢迎使用佘长庚写的计算器*******************");
do {
System.out.println("请输入第一个数:");
while (!(mScanner.hasNextFloat())) { //判断输入的是否是 float 类型
System.err.println("请输入数字:");
mScanner.next(); //拿出不满足的值
}
numA = mScanner.nextFloat();
accumulativeNum = numA+" "+accumulativeNum; //累计数字
do {
System.out.println("请输入运算符:");
operatot = mScanner.next();
if (operatot.equals("=")) {
isGo = 0;
accumulativeNum =accumulativeNum+" "+operatot+" "; //累计运算符
break;
}else if (operatot.equals("+")||operatot.equals("-")||operatot.equals("*")||operatot.equals("/")){
System.out.println("请输入下一个数:");
while (!(mScanner.hasNextFloat())) {
System.err.println("请输入数字:");
mScanner.next();
}
numB = mScanner.nextFloat();
switch (operatot) {
case "+":
//accumulativeNum 用于累计每一个数和运算符
//resultTotal 用于累计运算结果
accumulativeNum +=" "+ operatot+" " + numB+" ";
resultTotal = numA + numB;
recordOperatot = "+";
break;
case "-":
accumulativeNum +=" "+ operatot+" " + numB+" ";
resultTotal = numA - numB;
recordOperatot = "-";
break;
case "*":
accumulativeNum +=" "+ operatot+" " + numB+" ";
resultTotal = numA * numB;
recordOperatot = "*";
break;
case "/":
while (numB==0) {
System.err.println("除数不能为零");
while (!mScanner.hasNextFloat()) {
System.err.println("请输入数字:");
mScanner.next();
}
numB = mScanner.nextFloat();
}
accumulativeNum +=" "+ operatot+" " + numB+" ";
resultTotal = numA / numB;
recordOperatot = "/";
break;
}
swop = numA; //提出 numA 的值 用于打印输出
numA = resultTotal; //交换值
isGo = 1;
}else {
System.err.println("请输入 “+” “-” “*” “/” “=”");
isGo = 1;
}
} while (isGo == 1);
System.out.println(accumulativeNum+""+resultTotal);
System.out.println(swop+" "+recordOperatot+" "+numB+"="+resultTotal);
System.out.println("是否继续 1 运算 2 结束");
isGo = mScanner.nextInt();
} while (isGo==1);
System.out.println("用户体验可好:1 非常好 2 好 3 还行 4 差");
String enquiry = mScanner.next();
if (enquiry=="1"||enquiry=="2"||enquiry=="3"||enquiry=="4") {
System.out.println("谢谢配合,感谢使用");
} else {
System.out.println("谢谢使用");
}
mScanner.close();
}
}
hasNextInt方法的使用
最新推荐文章于 2024-07-08 15:14:18 发布