⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calcultar.txt

📁 本程序虽然只能进行两个操作数的简单的四则运算
💻 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 + -