我可以说一下思路:
创新互联服务项目包括通辽网站建设、通辽网站制作、通辽网页制作以及通辽网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,通辽网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到通辽省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
取到所有下拉框的值,还有这个输入框的值,比如第一个是: num1 第二个是运算符:* 第三个是:num2 第四个是结果: result
点击提交,给一个点击事件,把取到的值进行运算var cal= Integer.parseInt(num1)* Integer.parseInt(num2),cla是自己定义的,然后判断程序计算的结果是否和输入的结果相等,再给出相应的提示
你的想法是好的,但是我仔细构思了一遍,太难了。
首先难点就是怎么生成题目。也是最难得,因为有太多不确定,弄不好就会出现负数结果的题目。
然后是题目的解答,这个难点就不说了,这个我在几年前就写好了。一直没用上,现在却用上了。
还有,你要窗体,可是我不会用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 = 0; i 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 - 1; i = 0; i--) {
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 + 1; i 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 = 0; i 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");
}
}
}
}