最新java算術測試,java算術運算

本文目錄一覽:

用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算術運算測試系統怎麼保存答題記錄?

簡單的可以用文本文件(如.txt、.xml、.json保存),這些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做一個算術測試頁面

首先是選擇程序是做cs的還是bs的,bs比較方便,做jsp頁面,打開兩個瀏覽器,一個窗口顯示一個,一個顯示學前班模式,一個顯示小學模式

生成演算法也簡單,不管加法還是減法都生成一個2但小於上限(10或100)的數,比如98,然後生成一個比它小的數,最後一個就是它減去第二個數。如果是加法,則用第2、3個數作為提設,如果是減法,則用第1、2個數作為提設

原創文章,作者:EHSC,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145439.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EHSC的頭像EHSC
上一篇 2024-10-27 23:49
下一篇 2024-10-27 23:49

相關推薦

  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論