今日完成了算术题的输出并且成功以csv形式储存。
代码:
import com.opencsv.CSVWriter;标签:总结,String,int,10.29,每日,char,nextInt,length,ys From: https://www.cnblogs.com/jm56/p/17796462.html
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class suanshu {
Scanner in = new Scanner(System.in);//输入
List<String> qs = new ArrayList<>();//储存生成的题目
Random r = new Random();//创建随机数实例r
int max=101;
int sum = 50;//判断生成题目的数量,默认为50道题
int hc=0;//用来输出回车
int yihang=4;//用来控制一行输出几个题目,默认五个
//生成并输出题目的方法
int lx=0;
int num = 1;
int num1 = 1;
public void pd() {//进行判断
System.out.println("请输入你要输出几道题目:");
sum=in.nextInt();
System.out.println("请输入你要计算的最大值");
max=in.nextInt();
max++;
System.out.println("请输入你要做的类型,输入0为默认加减乘除,输入1为仅有加减,输入其他数值默认为0");
lx=in.nextInt();
if(lx!=1){
lx=0;
}
System.out.println("请输入你要多少个数字混合运行,默认为三个(只能输入大于等于3的数字,输入其他则默认为3)");
num1=in.nextInt();
num1 = num1 - 2;
if(num1<=0){
num1 = 1;
}
num =num1;
}
public void shuchu() {
for (int i = 0; i < sum; i++) {
String q;//将生成的题目变为字符串来储存到qs中
do {
int m = r.nextInt(max);//第一个数
int n = r.nextInt(max);//第二个数
int m1 = r.nextInt(max);//第三个数
if(lx==0) {
char[] ys = {'+', '-', '×', '÷'};//创建一个字符数组,存入加减乘除
char y = ys[r.nextInt(ys.length)];//这里通过填入它字符组的长度来完成length-1内的随机数
char[] ys1 = {'+', '-', '×', '÷'};//创建一个字符数组,存入加减乘除
char y1 = ys1[r.nextInt(ys.length)];//这里通过填入它字符组的长度来完成length-1内的随机数
q = String.valueOf(m) + y + String.valueOf(n)+y1+String.valueOf(m1);
while (num>0) {//这里通过循环来增加运算的数字个数
if(num==1){
q = q + '=';
num = num1;
break;
}
else{
int n1 = r.nextInt(max);
char[] ys2 = {'+', '-', '×', '÷'};//创建一个字符数组,存入加减乘除
char y2 = ys1[r.nextInt(ys.length)];//这里通过填入它字符组的长度来完成length-1内的随机数
q = q +y2+ String.valueOf(n1);
num--;
}
}
}else{
char[] ys = {'+', '-'};//创建一个字符数组,存入加减
char y = ys[r.nextInt(ys.length)];//这里通过填入它字符组的长度来完成length-1内的随机数
char[] ys1 = {'+', '-'};//创建一个字符数组,存入加减
char y1 = ys1[r.nextInt(ys.length)];//这里通过填入它字符组的长度来完成length-1内的随机数
q = String.valueOf(m) + y + String.valueOf(n)+y1+String.valueOf(m1);
while (num>0) {//这里通过循环来增加运算的数字个数
if(num==1){
q = q + '=';
num = num1;
break;
}
else{
int n1 = r.nextInt(max);
char[] ys2 = {'+', '-'};//创建一个字符数组,存入加减
char y2 = ys2[r.nextInt(ys.length)];//这里通过填入它字符组的长度来完成length-1内的随机数
q = q + y2+ String.valueOf(n1);
num--;
}
}
}
} while (qs.contains(q));//这里判断题目是否重复
qs.add(q);//将题目添加到list中
}
//循环输出
for(String tm:qs){
System.out.print(tm);
if(hc<yihang){//这里判断是输出空格还是输出回车
hc++;
System.out.print(" ");
}
else{
System.out.println();
hc=0;
}
}
String csvFilePath = "questions.csv";
try (CSVWriter writer = new CSVWriter(new FileWriter(csvFilePath))) {
// 写入表头
String[] header = {"算术题"};
writer.writeNext(header);
// 写入数据
for (String question : qs) {
writer.writeNext(new String[]{question});
}
System.out.println("Data written to " + csvFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
suanshu s = new suanshu();
s.pd();
s.shuchu();
}
}