为什么我的输出没有()围绕重复数字,为什么它不起作用?

时间:2013-11-14 18:16:50

标签: java netbeans

package dice.project;
import java.util.Scanner;
import java.util.Random;

public class DiceProject {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("Enter your number of rolls:");
        int count = in.nextInt();
        int[]rollDice = new int[count];
        Random values = new Random();

        for(int m=0; m<count; m++)
        {
            rollDice[m]=values.nextInt(6)+1;
        }
        boolean inRun=false;
        for(int m=0; m<rollDice.length; m++)
        {
            if(inRun)
            {
                if(m>0 && rollDice[m]!=rollDice[m-1])
                {
                    System.out.print(")" + rollDice[m]);
                    inRun=false;
                }
            }
            if(!inRun)
            {
                if(m<rollDice.length-1 && rollDice[m]==rollDice[m-1])
                {
                    System.out.print("(" + rollDice[m]);
                    inRun=true;
                }
            }
            System.out.print(rollDice[m]);


         }
            if(inRun)
                System.out.print("(");

                    }
                }

我的程序有什么问题?    当我运行它时,我得到一个异常的东西,它将无法正常工作?

 at java.util.Scanner.nextInt(Scanner.java:2166)        
 at java.util.Scanner.nextInt(Scanner.java:2119)
 at dice.project.DiceProject.main(DiceProject.java:20)

    这也是我在尝试输出时出现的内容吗?

3 个答案:

答案 0 :(得分:1)

在你第二次循环的第一次迭代中,你得到一个java.lang.ArrayIndexOutOfBoundsException,因为在这一行的第一次迭代中:

if(!inRun){
    if (m < rollDice.length - 1 && rollDice[m] == rollDice[m - 1]) {

此时变量m为0,并且您正在尝试获取数组rollDice[m - 1]中不存在的索引,该索引将为-1。修复此问题,您将看到您的程序正在运行。也许你需要改变一下你的逻辑。

还尝试使用允许您调试应用程序的IDE。

答案 1 :(得分:0)

给定代码获得java.lang.ArrayIndexOutOfBoundsException异常,但是在更改for循环后它可以正常工作。我不确定你想要的是什么:)

我做了什么

将for循环变量m0更改为1。它的工作正常我猜。

for(int m=1; m<rollDice.length; m++) {
 ....
}

正如我测试的那样,对于给定的输入12,我输出为52562434(44)556

答案 2 :(得分:0)

ArrayIndexOutOfBounds

来自eclipse调试器的快照。显然,不检查边界条件。当查找索引m=0的{​​{1}}数组元素时,会在第一次迭代中导致m-1