java的Scanner类确实不如c语言中的scanf好用,不过可以调用其他的方法来实现,下面介绍一个方法:
import java.util.Scanner;
//Calcute.java 进行计算
class Calcute{
public double calcute(double n1,String s,double n2){
double m=0;
if(s.equals("+"))
m=n1+n2;
if(s.equals("-"))
m=n1-n2;
if(s.equals("*"))
m=n1*n2;
if(s.equals("/")){
if(n2==0.0){ //注意除数若和整数“0”作比较,即n2==0,那么当输入的除数为“0.0”,输出将不显示告警提示。
System.out.println("syntax error");
}
m=n1/n2;
}
return m;
}
}
//Calcuter.class
public class Calcuter{
public static void main(String[] args) {
System.out.println("Welcome to use the Calcuter!"+'\n'+"It can calcute ten equations");
Scanner in=new Scanner(System.in);
for(int i=1;i<=10;i++){
System.out.println("please input a equation"+i);
String s=in.nextLine();
//正则表达式判断输入是否合法
while(!s.matches("[0-9]*[.]?[0-9]*[-+*/][0-9]*[.]?[0-9]*")){
System.out.println("your input is not right ,please try again!");
s=in.nextLine();
}
//提取输入算式中的两个数据
String strnum[]=s.split("[-+*/]");
double num[]={Double.parseDouble(strnum[0]),Double.parseDouble(strnum[1])};
//提取运算符
String oper=s.substring(strnum[0].length(),strnum[0].length()+1);
//创建对象
Calcute call=new Calcute();
double result=call.calcute(num[0],oper,num[1]);
System.out.println(""+"equation"+i+": "+num[0]+oper+num[1]+"="+result);
}
}
}