gpt4 book ai didi

java - 随机化用Java读取的文本文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:08 26 4
gpt4 key购买 nike

我正在尝试阅读 Java 中的文本文件,基本上是一组问题。四选一答。结构如下所示:

question

option a

option b

option c

option d

answer

这样读起来没问题:

public class rar{
public static String[] q=new String[50];
public static String[] a=new String[50];
public static String[] b=new String[50];
public static String[] c=new String[50];
public static String[] d=new String[50];
public static char[] ans=new char[50];
public static Scanner sr= new Scanner(System.in);


public static void main(String args[]){
int score=0;
try {
FileReader fr;
fr = new FileReader (new File("F:\\questions.txt"));
BufferedReader br = new BufferedReader (fr);
int ar=0;
for(ar=0;ar<2;ar++){
q[ar]=br.readLine();
a[ar]=br.readLine();
b[ar]=br.readLine();
c[ar]=br.readLine();
d[ar]=br.readLine();
String tempo=br.readLine();
ans[ar]=tempo.charAt(0);






System.out.println(q[ar]);
System.out.println(a[ar]);
System.out.println(b[ar]);
System.out.println(c[ar]);
System.out.println(d[ar]);
System.out.println("Answer: ");
String strans=sr.nextLine();
char y=strans.charAt(0);
if(y==ans[ar]){
System.out.println("check!");
score++;
System.out.println("Score:" + score);
}else{
System.out.println("Wrong!");
}

}
br.close();
} catch (Exception e) { e.printStackTrace();}


}




}

上面的代码是可以预见的。 for 循环只是递增。并根据顺序显示问题。

我想要做的是能够随机化文本文件,但仍保持相同的结构。 (q, a, b, c, d, ans)。但是当我尝试这样做时:

int ran= random(1,25);
System.out.println(q[ran]);
System.out.println(a[ran]);
System.out.println(b[ran]);
System.out.println(c[ran]);
System.out.println(d[ran]);
System.out.println("Answer: ");
String strans=sr.nextLine();
char y=strans.charAt(0);
if(y==ans[ran]){
System.out.println("check!");
score++;
System.out.println("Score:" + score);
}else{
System.out.println("Wrong!");
}

这是我用于随机化的方法:

public static int random(int min, int max){
int xx;
xx= (int) ( Math.random() * (max-min + 1))+ min;
return xx;
}

我有可能得到一个空值。您可以建议我做什么,以便在尝试随机化问题时不会得到 null?

你能看出我的程序还有什么问题吗?

最佳答案

我认为稍微改变一下结构会有很大帮助,让这对您来说更容易。定义新类:QuestionAnswer。让 Question 在其中包含选项和 Answer。这就是对象组合。

查看 Collection API .对于一系列问题,您可以使用随机播放方法将它们随机排列在一行中。让 Java 为您完成这项工作。

所以你可能有:

Collection<Question> questions = new ArrayList<Question>();

questions.add(...);
questions.add(...);
questions.add(...);

questions.shuffle();

为了进一步说明您为什么要这样做,为什么...你想尽可能地分离你的问题。问题、答案和选项都是不同的关注点。用户的 react 令人担忧。问题的随机化是一个问题。对用户响应的响应是一个关注点。

作为一名优秀的软件开发人员,您会希望将所有这些东西分开。 Java 实现这一点的构造是类。你可以在他们自己的类里面相对独立地发展你的想法。当您对自己的类(class)感到满意时,您所要做的就是将它们连接起来。定义它们的接口(interface),它们如何相互交谈。我喜欢先定义接口(interface),但当我开始时,我发现以后再考虑这个更容易一些。

可能看起来像很多工作,所有这些类和接口(interface)等等。当你做得好的时候,这样做只需要一小部分时间。你的返回是可测试性、可重用性。

关于java - 随机化用Java读取的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3890167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com