现在的位置: 首页 > 综合 > 正文

TaskOne YYJ学java

2018年02月21日 ⁄ 综合 ⁄ 共 1432字 ⁄ 字号 评论关闭

实现简单的整数的相加减,不支持括号。

支持各种大数。

Task_0.0

import java.io.*;
import java.util.*;
import java.math.*;
import java.applet.*;
import java.awt.*;
import java.awt.List;

public class yyj extends Applet {
	private Font f;
	private String letter;
	private boolean first;
	private boolean second;
	private char preOp;
	private int xpos, ypos, cnt;

	public void init() {
		f = new Font("Courier", Font.BOLD, 72);
		first = true;
		second = false;
		preOp = '+';
		letter = "";
	}

	public void paint(Graphics g) {
		g.setFont(f);
		if (!first) {
			g.drawString(letter, 70, 350);
		}
	}

	// when a key is pushed down, this function will work
	// key is the number of the key on the keyboard
	public boolean keyDown(Event e, int key) {
		first = false;
		if ((char) (key) == '=') {
			letter += "=" + Deal(letter);
			System.out.println(letter);
			repaint();
			second = true;
		} else {
			if (second)
				letter = "";
			second = false;
			letter += String.valueOf((char) key);
			repaint();
		}
		return true;
	}

	// return the value calculated by the string s
	public String Deal(String s) {
		BigInteger ans = BigInteger.ZERO;
		int len = s.length();
		BigInteger tmp = BigInteger.ZERO;
		for (int i = 0; i < len; i++) {
			char Cur = s.charAt(i);
			if (Cur >= '0' && Cur <= '9') {
				tmp = (tmp.multiply(BigInteger.valueOf(10)));
				tmp = tmp.add(BigInteger.valueOf(Cur - '0'));// a-'0';
			} else if (Cur == '+' || Cur == '-') {
				ans = DealNum(ans, tmp, preOp);
				preOp = Cur;
				tmp = BigInteger.ZERO;
			} else if (Cur == '=')
				break;
		}
		ans = DealNum(ans, tmp, preOp);
		preOp = '+';
		return String.valueOf(ans);
	}

	// do operation ,add or subtract
	public BigInteger DealNum(BigInteger a, BigInteger b, char c) {
		BigInteger ans = BigInteger.ZERO;
		if (c == '+')
			ans = a.add(b);
		else if (c == '-')
			ans = a.subtract(b);
		return ans;
	}
}

抱歉!评论已关闭.