Java编写计算器 输入第一个数字 运算符 第二个数字 得到结果并显示式子

Java编写计算器 输入第一个数字 运算符 第二个数字 得到结果并显示式子 算完后询问是否再算 并处理最后式子的整数小数问题。
最重要的是整数小数的处理。 完全没头绪 求大神帮忙

先用一个String 类型的变量接收键盘输入,然后用下面的方法去判断是否为double
public boolean checkDouble(String s){
//检查是否为double数,只要正数正则表达式为[0-9]+\\.{0,1}[0-9]{0,1}
if(s.matches("\\-{0,1}[0-9]+\\.{0,1}[0-9]{0,1}")){
return true;
}
return false;

}
只是简单的判断了一下,没有限定取值范围什么的,将就可以用,你根据返回值就可以接下来的操作了追问

就差最后一步 处理小数和整数问题 我输出的结果永远都是double 型

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-07-12
你到底是要如何处理整数小数啊,是要保留几位小数么?还是要四舍五入的不用啊
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format("1.1212121"));追问

怎么让double型智能转换成整型 我的结果和输入的数字都默认double 型 比如 我输入1+2 结果就是1.0000000+2.0000000=3.0000000

追答

import java.util.Scanner;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class whileshuzu
{
public static void main(String[] args)
{
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("js");
Scanner sc = new Scanner(System.in);
while(true)
{
System.out.print("输入第一个数字 运算符 第二个数字 :");
String line = sc.nextLine().trim();
try
{
Object result = se.eval(line);
System.out.println(line + "=" + result);
}
catch(ScriptException e)
{
System.out.print("式子不正确, ");
sc.close();
break;
}
}
}
}

追问

不能用 = =

追答

我用的挺好,你竟然说不能用

第2个回答  2017-07-12
你在写的时候别把 数字类型声明为int 型应该声明成double型的(精度不是太高,精度要求高的话可以使用 BigInteger和BigDecimal这两种类型),声明int型会自动转化为整型追问

已经是double 型了 现在就差最后一步 如果我输入小数 就有小数 如果我全是整型 还是有小数点 就是说还是double 型

追答

之前没看见 如果是我的话我会搞一个判断,就是吧数字进行double强制性转化为int型 如果他有小数点他就会失去精度,你比较小转化后和没转化之前的是否相同,相同的用int型不相同就用double型 (这是我的思路,也许有其它的更好的方法)

相似回答