我知道我刚才问了一个问题 facepalm
顺便说一句,这是Java编码。
在每个人都非常非常有用的建议之后(非常感谢你们)
我设法让一半以上的程序运行我想要的。
所有东西都指向我希望它们去的数组。现在我只需要访问数组,以便随机打印正确的信息。
这是我正在使用的当前代码:
给我带来问题的具体代码是:
长aa; int abc;
for (int i = 0; i < x; i++)
{
aa = Math.round(Math.random()*10);
String str = Long.toString(aa);
abc = Integer.parseInt(str);
String[] userAnswer = new String[x];
if(abc > x)
{
JOptionPane.showMessageDialog(null,"Number is too high. \nNumber Generator will reset.");
break;
}
userAnswer[i] = JOptionPane.showInputDialog(null,"Question "+quesNum+"\n"+questions[abc]+"\n\nA: "+a[abc]+"\nB: "+b[abc]+"\nC: "+c[abc]+"\nD: "+d[abc]);
answer = userAnswer[i].compareTo(answers[i]);
if(answer == 0)
{
JOptionPane.showMessageDialog(null,"Correct. \nThe Correct Answer is "+answers[abc]+""+i);
}
else
{
JOptionPane.showMessageDialog(null,"Wrong. \n The Correct Answer is "+answers[abc]+""+i);
}//else
答案 0 :(得分:1)
我不确定你的问题是什么,但我注意到这一行:
aa = Math.round(Math.random()*10);
如果您需要int
和0
之间的随机10
,则最好使用:
java.util.Random.nextInt(int n)
:返回0(包括)和指定值(不包括)之间的伪随机,均匀分布的int
值
您首先在其他地方创建一个实例(您只需在应用程序中执行此操作一次):
Random r = new Random();
然后,只要您需要0
和10
之间的随机整数,就可以:
aa = r.nextInt(10+1);
你可以写11
,但是写10+1
或许有额外的好处,提醒读者这是一个半开放的范围。
好的,我刚注意到以下内容:
aa = Math.round(Math.random()*10);
String str = Long.toString(aa);
abc = Integer.parseInt(str);
这没什么意义。你应该能够做到:
aa = r.nextInt(10+1);
abc = (int) aa;
虽然坦率地说我不确定你是否真的需要这些变量。也许你可以写:
int aa = r.nextInt(10+1);
您还应该考虑使用String.format
而不是进行所有这些连接。
System.out.println(
String.format("%d + %d = %s", 3, 4, 7)
); // prints "3 + 4 = 7"
答案 1 :(得分:1)
将来,请使用实际变量名称。 aa
和abc
没有任何意义,并没有帮助传达变量实际持有的日期。除非您正在处理坐标,否则x
也是一个错误的变量名称。
答案 2 :(得分:1)
对您的代码的一些一般性评论:
尝试使用描述性变量名称。一个名为“x”的变量 对程序员来说意义不大 阅读你的代码。尽管如此,他知道, 它可以用来存储 法国人口。你是什么 想一个更好的名字可能是?
请记住您的范围 变量(他们在哪里 用过的)。例如,如果变量只是 用于for循环,那么它应该 在for循环中声明。哪里 你认为“qq”变量声明应该 被移到?