?? 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 + -