java编写算术运算测试

java编写算术运算测试,第1张

我这个程序可以实现加拆橡减手宽乘除求余等功能,界面化 *** 作,简单好看,希望对你有用!

import java.awt.*

import java.awt.event.*

import java.lang.StrictMath

public class AddMyFrame extends Frame{

TextField t1,t2,t3

Label l2

Choice ch = new Choice()

Button b1

public AddMyFrame(String str){

super(str)

setBackground(Color.gray)

setLayout(new FlowLayout())

setSize(400,150)

addWindowListener(new WindowAdapter(){

public void windowClosed(WindowEvent e){

System.exit(0)

}

public void windowClosing(WindowEvent e){

System.exit(0)

}

})

initFrame()

}

public void initFrame(){

t1=new TextField(6)

t2=new TextField(6)

t3=new TextField(7)

ch.add("+")

ch.add("-")

ch.add("旅薯旁*")

ch.add("/")

ch.add("%")

ch.add("Sqrt")

l2=new Label("=")

b1=new Button("确定")

ButtonEvent be=new ButtonEvent()

t1.addKeyListener(be)

add(t1)

add(ch)

t2.addKeyListener(be)

add(t2)

add(l2)

add(t3)

b1.addActionListener(be)

add(b1)

}

public static void main(String [] atg){

AddMyFrame m1=new AddMyFrame("常用计算器")

m1.setVisible(true)

}

//------------------------------------------------

class ButtonEvent extends KeyAdapter implements ActionListener{

public void actionPerformed(ActionEvent e){

addMethod()

}

public void addMethod(){

int t1Value=0

int t2Value=0

double t3Value=0

try{

t1Value=Integer.parseInt(t1.getText())

}catch(Exception ex){

t1Value=0

t1.setText("0")

}

try{

t2Value=Integer.parseInt(t2.getText())

}catch(Exception ex){

t2Value=0

t2.setText("0")

}

if(ch.getSelectedItem()==("+")){

t3Value=t1Value+t2Value

t3.setText(String.valueOf(t3Value))

}

else if(ch.getSelectedItem()==("-")){

t3Value=t1Value-t2Value

t3.setText(String.valueOf(t3Value))

}

else if(ch.getSelectedItem()==("*")){

t3Value=t1Value*t2Value

t3.setText(String.valueOf(t3Value))

}

else if(ch.getSelectedItem()==("/")){

t3Value=t1Value/t2Value

t3.setText(String.valueOf(t3Value))

}

else if(ch.getSelectedItem()==("%")){

t3Value=t1Value%t2Value

t3.setText(String.valueOf(t3Value))

}

else if(ch.getSelectedItem()==("Sqrt")){

t3Value=t1Value*t2Value

t3Value=Math.sqrt(t3Value)

t3.setText(String.valueOf(t3Value))

}

}

public void keyReleased(KeyEvent e){

addMethod()

}

}

}

//常用计算器版权@playlong2009先生2009/12/5

你的想法是好的,但是我仔细构思了一遍,太难了。

首先难点就是怎么生成题目。也是最难得,因为有太多不确定,弄不好就会出现负数结果的题目。

然后是题目的解答,这个难点就不说了,这个我在几年前就写好了。一直没用上,现在却用上了。

还有,你要窗体,可是我不会用swing

还有你要的四则混合运算是多长的,我总不能写一个有1000多个数字写成的式子吧。

题目中是否涉及到小数

下面是我的计算代手蔽码:

package compute

public class CaculateString {

private String str, s

private int p1, p2

public CaculateString(String str) {

this.str = str

this.clear()

this.check()

}

public String caculate() {

while (isEnd(str)) {

p2 = str.indexOf(")")

if (p2 != -1) {

s = str.substring(0, p2)

p1 = s.lastIndexOf("("旅薯橡)

s = str.substring(p1 + 1, p2)

if (!s.equals("")) {

s = this.caculateNumber(s)

if (p2 == (str.length() - 1))

str = str.substring(0, p1) + s

else

str = str.substring(0, p1) + s + str.substring(p2 + 1)

} else {

str = str.substring(0, p1) + str.substring(p2 + 1)

}

} else

str = this.caculateNumber(str)

}

return str

}

private String caculateNumber(String ss) {

int p3 = 0, p4 = 0, p5 = 0

char b = ' ', c = ' '

String s1 = null, s2 = null

double d1 = 0.0, d2 = 0.0, d3 = 0.0

if (ss.charAt(0) == '+') {

ss = ss.substring(1)

if (ss.indexOf("+") == -1 &&ss.indexOf("-") == -1

&&ss.indexOf("*") == -1 &&ss.indexOf("/") == -1)

return ss

} else if (ss.charAt(0) == '-') {

if (ss.indexOf("+", 1) == -1 &&ss.indexOf("-", 1) == -1

&&ss.indexOf("*", 1) == -1 &&ss.indexOf("拆旁/", 1) == -1)

return ss

}

while (isEnd2(ss)) {

p3 = 0

p4 = 0

p5 = 0

if (ss.indexOf("*") == -1 &&ss.indexOf("/") == -1) {

for (int i = 0i <ss.length()i++) {

b = ss.charAt(i)

if (b == '+' || b == '-') {

if (p3 == 0 &&i != 0) {

p3 = i

c = b

} else if (p3 != 0 &&i != (p3 + 1)) {

p4 = i

break

}

}

}

if (p4 == 0) {

s1 = ss.substring(0, p3)

s2 = ss.substring(p3 + 1)

} else {

s1 = ss.substring(0, p3)

s2 = ss.substring(p3 + 1, p4)

}

d1 = Double.parseDouble(s1)

d2 = Double.parseDouble(s2)

if (c == '+')

d3 = d1 + d2

else if (c == '-')

d3 = d1 - d2

if (p4 == 0)

ss = new Double(d3).toString()

else

ss = new Double(d3).toString() + ss.substring(p4)

} else {

if (ss.indexOf("*") == -1) {

c = '/'

p4 = ss.indexOf("/")

} else if (ss.indexOf("/") == -1) {

c = '*'

p4 = ss.indexOf("*")

} else if (ss.indexOf("*") >ss.indexOf("/")) {

c = '/'

p4 = ss.indexOf("/")

} else if (ss.indexOf("*") <ss.indexOf("/")) {

c = '*'

p4 = ss.indexOf("*")

}

for (int i = p4 - 1i >= 0i--) {

b = ss.charAt(i)

if (b == '+' || b == '-') {

if ((i - 1) != 0 &&ss.charAt(i - 1) != '+'

&&ss.charAt(i - 1) != '-') {

p3 = i

break

} else if ((i - 1) != 0

&&(ss.charAt(i - 1) == '+' || ss.charAt(i - 1) == '-')) {

p3 = i - 1

break

}

}

}

for (int i = p4 + 1i <ss.length()i++) {

b = ss.charAt(i)

if ((b == '+' || b == '-' || b == '*' || b == '/')

&&(i - 1) != p4) {

p5 = i

break

}

}

if (p3 == 0)

s1 = ss.substring(0, p4)

else

s1 = ss.substring(p3 + 1, p4)

if (p5 == 0)

s2 = ss.substring(p4 + 1)

else

s2 = ss.substring(p4 + 1, p5)

d1 = Double.parseDouble(s1)

d2 = Double.parseDouble(s2)

if (c == '*')

d3 = d1 * d2

else if (c == '/')

d3 = d1 / d2

if (p3 == 0 &&p5 == 0)

ss = new Double(d3).toString()

else if (p3 == 0 &&p5 != 0)

ss = new Double(d3).toString() + ss.substring(p5)

else if (p3 != 0 &&p5 == 0)

ss = ss.substring(0, p3 + 1) + new Double(d3).toString()

else if (p3 != 0 &&p5 != 0)

ss = ss.substring(0, p3 + 1) + new Double(d3).toString()

+ ss.substring(p5)

}

}

return ss

}

private boolean isEnd(String str) {

if (str.indexOf("(") != -1 || str.indexOf(")") != -1

|| str.indexOf("+", 1) != -1 || str.indexOf("-", 1) != -1

|| str.indexOf("*", 1) != -1 || str.indexOf("/", 1) != -1)

return true

return false

}

private boolean isEnd2(String ss) {

if (ss.indexOf("+", 1) != -1 || ss.indexOf("-", 1) != -1

|| ss.indexOf("*", 1) != -1 || ss.indexOf("/", 1) != -1)

return true

return false

}

private void clear() {

str = str.replaceAll(" ", "")

}

private void check() {

int right = 0, left = 0

for (int i = 0i <str.length()i++) {

char a = str.charAt(i)

if (a != '0' &&a != '1' &&a != '2' &&a != '3' &&a != '4'

&&a != '5' &&a != '6' &&a != '7' &&a != '8' &&a != '9'

&&a != '+' &&a != '-' &&a != '*' &&a != '/' &&a != '('

&&a != ')' &&a != '.') {

System.exit(0)

}

if (a == '(')

left++

else if (a == ')')

right++

}

if (left != right) {

System.exit(0)

}

}

public static void main(String args[]) {

System.out.println(new CaculateString("((1-(0/3))*7)+8").caculate())

}

}

import java.util.Random

import java.util.Scanner

public class TestRandom {

    public static void main(String[] args) {

        Random rand = new Random()

        Scanner input = new Scanner(System.in)

        while(true){

            int a = rand.nextInt(100)

 配碧       如州    int b = rand.nextInt(100)

            int result = a+b

            System.out.println(a+"+"+b+"=?")

            int  yourGuess=input.nextInt() 渣卖蔽

            if(yourGuess == result){

                System.out.println("you are right")

            }else {

                System.out.println("you are wrong")

            }

        }

        

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8282943.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存