📄 calcultar.txt
字号:
/**
* 实现简单四则混合运算
*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
/**
* @author wengliping
*
*/
public class Calculator
{
/**
* @param args
*/
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
// 1. 读取用户输入
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// 2. 分析用户输入数据
// String input = in.readLine();
while (true)
{
System.out.println("请输入表达式:");
String input = in.readLine();
if (input == null || input.trim().equals(""))
{
//System.out.println("请输入表达式:");
continue;
}
if ("end".equalsIgnoreCase(input))
{
break;
}
// 获得操作符
String op = getOpFromExp(input);
// 检查操作符
if ("".equals(op))
{
System.out.println("无效的操作符");
continue;
}
// 获得操作数
int index = input.indexOf(op, 1);
String lOpnd = input.substring(0, index);
String rOpnd = input.substring(index + 1);
// String[] opnds = input.split(op);
// if (opnds.length != 2)
// {
// System.out.println("无效的表达式,请重新输入");
// continue;
// }
if (lOpnd.trim().length() == 0)
{
System.out.println("无效的操作数,请重新输入");
continue;
}
if (rOpnd.trim().length() == 0)
{
System.out.println("无效的操作数,请重新输入");
continue;
}
String result = calculate(lOpnd.trim(), rOpnd.trim(), op);
// 3. 计算结果
if ("".equals(result))
{
System.out.println("无效的表达式,请重新输入");
continue;
}
// 4. 输出结果
System.out.println(input + "=" + result);
}
}
/**
* 获得操作符
*
* @param exp
* @return
*/
public static String getOpFromExp(String exp)
{
String op = "";
String tmp = exp.trim();
if (tmp.indexOf("+", 1) > 0)
{
op = "+";
} else if (tmp.indexOf("-", 1) > 0)
{
op = "-";
} else if (tmp.indexOf("*", 1) > 0)
{
op = "*";
} else if (tmp.indexOf("/", 1) > 0)
{
op = "/";
}
return op;
}
/**
* 计算表达式
*
* @param lOpnd
* @param rOpnd
* @param op
* @return
*/
public static String calculate(String lOpnd, String rOpnd, String op)
{
String result = "";
try
{
if (lOpnd.indexOf(".") > 0 || rOpnd.indexOf(".") > 0)
{
double leftOpnd = Double.parseDouble(lOpnd);
double rightOpnd = Double.parseDouble(rOpnd);
if (op.equals("+"))
{
result = String.valueOf(doAdd(leftOpnd, rightOpnd));
} else if (op.equals("-"))
{
result = String.valueOf(doSub(leftOpnd, rightOpnd));
}
if (op.equals("*"))
{
result = String.valueOf(doMul(leftOpnd, rightOpnd));
}
if (op.equals("/"))
{
result = String.valueOf(doDiv(leftOpnd, rightOpnd));
}
} else
{
int leftOpnd = Integer.parseInt(lOpnd);
int rightOpnd = Integer.parseInt(rOpnd);
if (op.equals("+"))
{
result = String.valueOf(doAdd(leftOpnd, rightOpnd));
} else if (op.equals("-"))
{
result = String.valueOf(doSub(leftOpnd, rightOpnd));
}
if (op.equals("*"))
{
result = String.valueOf(doMul(leftOpnd, rightOpnd));
}
if (op.equals("/"))
{
result = String.valueOf(doDiv(leftOpnd, rightOpnd));
}
}
} catch (Exception e)
{
System.out.println(e.getMessage());
}
return result;
}
/**
*
* @param p1
* @param p2
* @return
*/
public static double doAdd(double p1, double p2)
{
double result = 0;
result = p1 + p2;
return result;
}
/**
*
* @param p1
* @param p2
* @return
*/
public static int doAdd(int p1, int p2)
{
int result = 0;
result = p1 + p2;
return result;
}
public static double doSub(double p1, double p2)
{
double result = 0;
result = p1 - p2;
return result;
}
public static int doSub(int p1, int p2)
{
int result = 0;
result = p1 - p2;
return result;
}
public static double doMul(double p1, double p2)
{
double result = 0;
result = p1 * p2;
return result;
}
public static int doMul(int p1, int p2)
{
int result = 0;
result = p1 * p2;
return result;
}
public static double doDiv(double p1, double p2)
{
double result = 0;
result = p1 / p2;
return result;
}
public static int doDiv(int p1, int p2)
{
int result = 0;
result = p1 / p2;
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -