阵列计数不正确

时间:2010-06-02 18:44:26

标签: java arrays

我知道我刚才问了一个问题 facepalm

顺便说一句,这是Java编码。

在每个人都非常非常有用的建议之后(非常感谢你们)

我设法让一半以上的程序运行我想要的。

所有东西都指向我希望它们去的数组。现在我只需要访问数组,以便随机打印正确的信息。

这是我正在使用的当前代码:

http://pastebin.org/301483

给我带来问题的具体代码是:

长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

3 个答案:

答案 0 :(得分:1)

我不确定你的问题是什么,但我注意到这一行:

aa = Math.round(Math.random()*10);

如果您需要int0之间的随机10,则最好使用:

  

java.util.Random.nextInt(int n):返回0(包括)和指定值(不包括)之间的伪随机,均匀分布的int

您首先在其他地方创建一个实例(您只需在应用程序中执行此操作一次):

Random r = new Random();

然后,只要您需要010之间的随机整数,就可以:

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"

API链接

答案 1 :(得分:1)

将来,请使用实际变量名称。 aaabc没有任何意义,并没有帮助传达变量实际持有的日期。除非您正在处理坐标,否则x也是一个错误的变量名称。

答案 2 :(得分:1)

对您的代码的一些一般性评论:

  • 尝试使用描述性变量名称。一个名为“x”的变量 对程序员来说意义不大 阅读你的代码。尽管如此,他知道, 它可以用来存储 法国人口。你是什​​么 想一个更好的名字可能是?

  • 请记住您的范围 变量(他们在哪里 用过的)。例如,如果变量只是 用于for循环,那么它应该 在for循环中声明。哪里 你认为“qq”变量声明应该 被移到?