hasNextInt方法的使用

/**
 * 这是一个升级版简易计算器:同样只支持从左到右的运算
 *    这里简化了  一些循环  和增加了  输入判断  错误输出红色警告
 * 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();
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值