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)
这也是我在尝试输出时出现的内容吗?
答案 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循环变量m
从0
更改为1
。它的工作正常我猜。
for(int m=1; m<rollDice.length; m++) {
....
}
正如我测试的那样,对于给定的输入12,我输出为52562434(44)556
。
答案 2 :(得分:0)
来自eclipse调试器的快照。显然,不检查边界条件。当查找索引m=0
的{{1}}数组元素时,会在第一次迭代中导致m-1
。