加减法,出题小程序: 效果图展示: 这个是部分的演示效果,具体的可以执行如下的代码,然后,也可根据自己的想象,更加完善一下一个小程序: 执行的入口: package day_06 ; import
加减法,出题小程序:
效果图展示:
这个是部分的演示效果,具体的可以执行如下的代码,然后,也可根据自己的想象,更加完善一下一个小程序:
执行的入口:
package day_06;import java.util.*;
/**
* 指定范围内的加减法,出题小程序
*/
public class Demo01 {
public static void main(String[] args){
init();
}
public static void init(){
System.out.println("加减法,出题小程序(加减)");
Scanner sc = new Scanner(System.in);
System.out.println("请输入您出题的总数:(也就是总共出题多少道?)");
int total = sc.nextInt();
System.out.println("请输入加减法运算的最小值:");
int min = sc.nextInt();
System.out.println("请输入加减法运算的最大值:");
int max = sc.nextInt();
System.out.println("1、加法运算");
System.out.println("2、减法运算");
System.out.println("3、加减法都有,随机数量");
System.out.println("4、平均出题,各占一半");
System.out.println("5、结束出题");
System.out.println("请选择您出题的类型,输入相应的序号即可:");
int select = sc.nextInt();
if (select == 4 && total%2 != 0){
System.out.println("尊敬的用户,您好!您的出题总数是奇数,无法进行平均分配,请问您是否要进行改变?(1.是;2.否)");
int sel = sc.nextInt();
if (sel == 1){
System.out.println("请输入您出题的总数:");
int i = sc.nextInt();
total = i;
}else {
System.out.println("尊敬的用户,您好,我们将默认为您选择为减法大于加法进行出题,");
}
}
System.out.println("尊敬的用户您好:\n您当前选择的数据如下列表所示:\n\t1.出题总数:"+total+"\n\t出题最小数值:"+min+"\n\t出题最大数值:"+max+"\n请问您是否要开始出题?(1.是;2.否)");
Show.initData.put("total", total+"");
Show.initData.put("min", min+"");
Show.initData.put("max", max+"");
Show.initData.put("select", select+"");
int i = sc.nextInt();
if (i == 1){
switch (select){
case 1:
case 2:
case 3:
case 4:
Map<String, List> js = Main.js(total, max, min, select);
Show.showMain(js);
break;
case 5:
break;
default:
System.out.println("此项功能暂未开发,敬请期待!");
}
}else {
System.out.println("谢谢,欢迎您的下次使用!");
}
}
}
逻辑区域:
在这一块,主要就是判断和循环之间的使用。
package day_06;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static Map<String,List> js(int total, int max, int min, int type){
Map<String,List> listMap = new HashMap();
List<String> adds = new ArrayList<>();//存放题目
List<Integer> da = new ArrayList<>();//存放答案
String icon = "";
int addNum = 0;//加法的数量
if (type == 1){
icon = "+";
}else if (type == 2){
icon = "-";
}else if (type == 3){
addNum = (int)(Math.random()*(max - min)+min);//加法的数量
}if (type == 4){
addNum = total/2;
}
for (int i = 1; i <= total; i++) {
int left = (int)(Math.random()*(max - min)+min);
int right = (int)(Math.random()*(max - min)+min);
if ( type == 1 || type == 2) {
adds.add(left + icon + right + "=");
if (icon.equals("+")){
da.add(left+right);
}else {
if (left - right < 0){
i--;
continue;
}
da.add(left-right);
}
}else {
if (i < addNum){
adds.add(left + "+" + right + "=");
da.add(left+right);
}else {
if (left - right < 0){
i--;
continue;
}
adds.add(left + "-" + right + "=");
da.add(left-right);
}
}
}
listMap.put("title", adds);
listMap.put("da", da);
System.out.println("出题成功。。。");
return listMap;
}
}
数据展示:
在这里是,涉及到有递归的使用。
package day_06;import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Show {
public static Map<String, String> initData = new HashMap<>();
private static Scanner sc = new Scanner(System.in);
public static void showData(Map<String, List> datas){
List<String> title = datas.get("title");//题目
List<Integer> da = datas.get("da");//答案
for (int i = 0; i < title.size(); i++) {
System.out.println((i+1)+"、"+title.get(i)+da.get(i));
}
showMain(datas);
}
public static void showTitle(Map<String, List> datas){
List<String> title = datas.get("title");//题目
for (int i = 0; i < title.size(); i++) {
System.out.println((i+1)+"、"+title.get(i));
}
showMain(datas);
}
public static void showDa(Map<String, List> datas){
List<Integer> da = datas.get("da");//答案
for (int i = 0; i < da.size(); i++) {
System.out.println((i+1)+"、"+da.get(i));
}
showMain(datas);
}
public static void showMain(Map<String, List> js){
System.out.println("——————————————————————————————————————————————————————————————————————————");
System.out.println("\t\t\t出题完成,您当前可以查询如下所示的功能:");
System.out.println("——————————————————————————————————————————————————————————————————————————");
System.out.println("1、查看试卷");
System.out.println("2、查看试卷和答案");
System.out.println("3、查看答案");
System.out.println("4、重新出题(根据上一次输入的数据重新生成题目)");
System.out.println("5、重新出题(重新输入数据)");
int choise = sc.nextInt();
if (choise == 1){
showTitle(js);
}else if (choise == 2){
Show.showData(js);
}else if (choise == 3){
Show.showDa(js);
}else if (choise == 4){
String total1 = Show.initData.get("total");
String min1 = Show.initData.get("min");
Show.initData.get("max");
js = null;
js = Main.js(
Integer.parseInt(Show.initData.get("total")),
Integer.parseInt(Show.initData.get("max")),
Integer.parseInt(Show.initData.get("min")),
Integer.parseInt(Show.initData.get("select")));
showMain(js);
}else if (choise == 5){
Demo01.init();
}
}
}
程序中含有部分的bug,如果您感兴趣,可以一起探讨解决bug的,期待与您的交流。。。
如有不足,请您指正,谢谢,一起交流,提升。。。