今天给各位分享小学数学出题器的java课程设计的知识,其中也会对小学编程题目进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、java课程设计“小学算术运算测试程序”2、用Java设计一个小学算术运算测试软件3、求一个能够 自动生成小学生数学练习题目 的Java程序。
java课程设计“小学算术运算测试程序”
花了好几个小时,测试通过,希望楼主多给点分
import java.util.Scanner;
class Question{
private int firstParam;
private int secondParam;
private String operator;
private int answer;
private int score;
public int getFirstParam() {
return firstParam;
}
public void setFirstParam(int firstParam) {
this.firstParam = firstParam;
}
public int getSecondParam() {
return secondParam;
}
public void setSecondParam(int secondParam) {
this.secondParam = secondParam;
}
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public int getAnswer() {
return answer;
}
public void setAnswer(int answer) {
this.answer = answer;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
//构造
public Question(int firstParam, int secondParam) {
this.firstParam = firstParam;
this.secondParam = secondParam;
}
}
public class StudentStudy {
private int questionNumber;
private String operator;
private Question[] questions;
private int rightNumber=0;
private int wrongNumber=0;
public String getOperator() {
return operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
public int getQuestionNumber() {
return questionNumber;
}
public void setQuestionNumber(int questionNumber) {
this.questionNumber = questionNumber;
}
public int getRightNumber() {
return rightNumber;
}
public void setRightNumber(int rightNumber) {
this.rightNumber = rightNumber;
}
public int getWrongNumber() {
return wrongNumber;
}
public void setWrongNumber(int wrongNumber) {
this.wrongNumber = wrongNumber;
}
public Question[] getQuestions() {
return questions;
}
public void setQuestions(Question[] questions) {
this.questions = questions;
}
public int getRandom(){
return (int)(Math.random()*10);
}
public int calculateByOperator(String operator,int first,int second){
switch(operator.charAt(0)){
case ‘+’:
return first+second;
case ‘-‘:
return first-second;
default:
return 0;
}
}
public void makeQuestion(){
mywhile:
while(questions[questionNumber-1]==null){
Question question=new Question(getRandom(),getRandom());
for(int i=0;questions[i]!=nulliquestionNumber;i++){
if((question.getFirstParam()==questions[i].getFirstParam())(question.getSecondParam()==questions[i].getSecondParam())){
continue mywhile;
}
}
for(int i=0;iquestionNumber;i++){
if(questions[i]==null){
questions[i]=question;
questions[i].setOperator(operator);
questions[i].setScore(100/questionNumber);
questions[i].setAnswer(calculateByOperator(operator,questions[i].getFirstParam(),questions[i].getSecondParam()));
break;
}
}
}
}
public StudentStudy(int questionNumber){
this.questionNumber=questionNumber;
questions=new Question[this.questionNumber];
}
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println(“现在开始测试,请填写要测试的试题数量(1-100):”);
int number=input.nextInt();
StudentStudy ss=new StudentStudy(number);
System.out.println(“请选择要测试的试题类型:1加法2减法”);
int type=input.nextInt();
switch(type){
case 1:
ss.setOperator(“+”);
break;
case 2:
ss.setOperator(“-“);
break;
default:
System.out.println(“输入有误,退出系统!”);
System.exit(0);
}
ss.makeQuestion();
for(int i=0;inumber;i++){
System.out.println(“第”+(i+1)+”题:”+ss.getQuestions()[i].getFirstParam()+ss.getQuestions()[i].getOperator()+ss.getQuestions()[i].getSecondParam()+”=?”);
int answer=input.nextInt();
if(ss.getQuestions()[i].getAnswer()==answer){
ss.setRightNumber(ss.getRightNumber()+1);
System.out.println(“回答正确!”);
}
else{
ss.setWrongNumber(ss.getWrongNumber()+1);
System.out.println(“回答错误!”);
}
}
System.out.println(“您总共答了”+ss.getQuestionNumber()+”道题,答对”+ss.getRightNumber()+”道,答错”+ss.getWrongNumber()+”道,最后总分为:”+ss.getRightNumber()*100/ss.getQuestionNumber()+”分”);
}
}
用Java设计一个小学算术运算测试软件
你的想法是好的,但是我仔细构思了一遍,太难了。
首先难点就是怎么生成题目。也是最难得,因为有太多不确定,弄不好就会出现负数结果的题目。
然后是题目的解答,这个难点就不说了,这个我在几年前就写好了。一直没用上,现在却用上了。
还有,你要窗体,可是我不会用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());
}
}
求一个能够 自动生成小学生数学练习题目 的Java程序。
按照你的要求编写的小学数学练习题目自动生成系统的Java程序如下
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class B extends JFrame implements ActionListener{
int max=20;
int MAX=10;
int TYPE=1;
JLabel jlTitle=new JLabel();
JLabel jl=new JLabel(“”);
JLabel jlAnswer=new JLabel(“”);
JLabel jlTotal=new JLabel(“共”+max+”题”);
JLabel jlcorrect=new JLabel();
JTextField jtf=new JTextField(3);
JMenuBar jmb=new JMenuBar();
JMenu jm=new JMenu(“类型 “);
JMenuItem jmi1=new JMenuItem(“10以内加法”);
JMenuItem jmi2=new JMenuItem(“10以内减法”);
JMenuItem jmi3=new JMenuItem(“20以内加法”);
JMenuItem jmi4=new JMenuItem(“20以内减法”);
JMenuItem jmi5=new JMenuItem(“100以内加法”);
JMenuItem jmi6=new JMenuItem(“100以内减法”);
JMenuItem jmi7=new JMenuItem(“100以内乘法”);
JMenuItem jmi8=new JMenuItem(“100以内除法”);
JButton jb1=new JButton(“上一题”);
JButton jb2=new JButton(“下一题”);
JButton jb3=new JButton(“评卷”);
JButton jb4=new JButton(“答案”);
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
String[] question=new String[max];
int[] answer=new int[max];
String[] studentAnswer=new String[max];
boolean[]correct=new boolean[max];
int count=1;
boolean submitFlag=false;
B(){
super(“小学数学测试”);
jlTitle.setFont(new Font(null,Font.PLAIN,20));
jlTotal.setFont(new Font(null,Font.PLAIN,20));
jlAnswer.setFont(new Font(null,Font.PLAIN,20));
jl.setFont(new Font(null,Font.PLAIN,20));
jlcorrect.setFont(new Font(null,Font.PLAIN,20));
jlcorrect.setForeground(Color.RED);
jtf.setFont(new Font(null,Font.PLAIN,20));
fillQuestion();
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
jmi1.addActionListener(this);
jmi2.addActionListener(this);
jmi3.addActionListener(this);
jmi4.addActionListener(this);
jmi5.addActionListener(this);
jmi6.addActionListener(this);
jmi7.addActionListener(this);
jmi8.addActionListener(this);
jm.add(jmi1);jm.add(jmi2);jm.add(jmi3);jm.add(jmi4);jm.add(jmi5);jm.add(jmi6);jm.add(jmi7);jm.add(jmi8);
jmb.add(jm);
setJMenuBar(jmb);
jp1.add(jlTitle);jp1.add(jlTotal);jp1.add(jb3);jp1.add(jb4);
jp2.add(jl);jp2.add(jtf);jp2.add(jlcorrect);jp2.add(jlAnswer);
jp3.add(jb1);jp3.add(jb2);
add(jp1,BorderLayout.NORTH);
add(jp2,BorderLayout.CENTER);
add(jp3,BorderLayout.SOUTH);
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()==jb1){
if(submitFlag==false){
try{
int tempanswer=Integer.parseInt(jtf.getText().trim());
studentAnswer[count-1]=jtf.getText().trim();
if(count==1)count=max;
else count–;
jlTitle.setText(“第”+count+”题”);
jl.setText(question[count-1]);
jtf.setText(“”);
if(studentAnswer[count-1]==null||studentAnswer[count-1].equals(“”)){
}else{
jtf.setText(studentAnswer[count-1]);
}
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(this, “请输入正整数!”);
jtf.requestFocus();
}
}else{
if(count==1)count=max;
else count–;
jlTitle.setText(“第”+count+”题”);
jl.setText(question[count-1]);
jlAnswer.setText(“”);
jtf.setEnabled(false);
jtf.setText(studentAnswer[count-1]);
jb4.setEnabled(true);
if(correct[count-1]==true){
jlcorrect.setText(“√”);
}else{
jlcorrect.setText(“×”);
}
}
}
if(ae.getSource()==jb2){
if(submitFlag==false){
try{
int tempanswer=Integer.parseInt(jtf.getText().trim());
studentAnswer[count-1]=jtf.getText().trim();
if(count==max)count=1;
else count++;
jlTitle.setText(“第”+count+”题”);
jl.setText(question[count-1]);
jtf.setText(“”);
if(studentAnswer[count-1]==null||studentAnswer[count-1].equals(“”)){
}else{
jtf.setText(studentAnswer[count-1]);
}
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(this, “请输入正整数!”);
jtf.requestFocus();
}
}else{
if(count==max)count=1;
else count++;
jlTitle.setText(“第”+count+”题”);
jl.setText(question[count-1]);
jlAnswer.setText(“”);
jtf.setEnabled(false);
jtf.setText(studentAnswer[count-1]);
jb4.setEnabled(true);
if(correct[count-1]==true){
jlcorrect.setText(“√”);
}else{
jlcorrect.setText(“×”);
}
}
}
if(ae.getSource()==jb3){
try{
int tempanswer=Integer.parseInt(jtf.getText().trim());
studentAnswer[count-1]=jtf.getText().trim();
for(int i=0;imax;i++){
if(studentAnswer[i]==null||studentAnswer[i].equals(“”)){
correct[i]=false;
}else if(Integer.parseInt(studentAnswer[i])==answer[i]){
correct[i]=true;
}else{
correct[i]=false;
}
}
int correctAnswer=0;
for(int i=0;imax;i++){
if(correct[i]==true){
correctAnswer++;
}
}
String s=”共”+max+”道题\n”;
s=s+”答对”+correctAnswer+”道题\n”;
s=s+”答错”+(max-correctAnswer)+”道题\n”;
s=s+”成绩”+String.format(“%.2f”,(100*(float)correctAnswer/max))+”分\n”;
JOptionPane.showMessageDialog(this, s);
submitFlag=true;
jb4.setEnabled(true);
jtf.setEnabled(false);
jtf.setText(studentAnswer[count-1]);
if(correct[count-1]==true){
jlcorrect.setText(“√”);
}else{
jlcorrect.setText(“×”);
}
}catch(NumberFormatException nfe){
JOptionPane.showMessageDialog(this, “请输入正整数!”);
jtf.requestFocus();
}
}
if(ae.getSource()==jb4){
jlAnswer.setText(String.valueOf(answer[count-1]));
}
if(ae.getSource()==jmi1){
MAX=10;TYPE=1;fillQuestion();
}
if(ae.getSource()==jmi2){
MAX=10;TYPE=2;fillQuestion();
}
if(ae.getSource()==jmi3){
MAX=20;TYPE=1;fillQuestion();
}
if(ae.getSource()==jmi4){
MAX=20;TYPE=2;fillQuestion();
}
if(ae.getSource()==jmi5){
MAX=100;TYPE=1;fillQuestion();
}
if(ae.getSource()==jmi6){
MAX=100;TYPE=2;fillQuestion();
}
if(ae.getSource()==jmi7){
MAX=100;TYPE=3;fillQuestion();
}
if(ae.getSource()==jmi8){
MAX=100;TYPE=4;fillQuestion();
}
}
public static void main(String[] args) {
new B();
}
public void fillQuestion(){
count=1;
for(int i=0;imax;i++){
String s=randomQuestion(MAX,TYPE);
question[i]=s.substring(0,s.indexOf(“=”)+1);
answer[i]=Integer.parseInt(s.substring(s.indexOf(“=”)+1));
}
studentAnswer=new String[max];
correct=new boolean[max];
jl.setText(question[0]);
jlTitle.setText(“第”+count+”题”);
jlcorrect.setText(“”);
jlAnswer.setText(“”);
submitFlag=false;
jtf.setEnabled(true);
jtf.setText(“”);
jb4.setEnabled(false);
}
public String randomQuestion(int MAX,int TYPE) {
String s=””;
int answer=MAX+1;
while(answerMAX||answer0){
int a=(int)(Math.random()*MAX+1);
int b=(int)(Math.random()*MAX+1);
switch(TYPE){
case 1:answer=a+b;break;
case 2:answer=a-b;break;
case 3:answer=a*b;break;
case 4:
if(a%b==0){
answer=a/b;
}
break;
}
if(answer=MAXanswer=0){
s=s+a;
switch(TYPE){
case 1:s=s+”+”;break;
case 2:s=s+”-“;break;
case 3:s=s+”*”;break;
case 4:s=s+”/”;break;
}
s=s+b+”=”+answer;
}
}
return s;
}
}
运行结果
关于小学数学出题器的java课程设计和小学编程题目的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。