gpt4 book ai didi

java - 在另一个类中运行时,ArrayIndexOutOfBounds 存在,但不是预期的

转载 作者:行者123 更新时间:2023-12-02 07:08:37 25 4
gpt4 key购买 nike

Random random = new Random();
int numDigits;
int[] secretNumber = new int[numDigits];

public int[] convertNumToDigitArray(String number){
int[] numToDigitArray = new int[numDigits];
for (int i = 0; i<number.length(); i++){
numToDigitArray[i] = number.charAt(i);
}
return numToDigitArray;
}

public int getNumDigits(){
return numDigits;
}

public int[] getSecretNumber(){
return secretNumber;
}

public void setNumDigits(int numDigits){
this.numDigits=numDigits;
}

public void generateNewSecret(){
int number = random.nextInt(((int)Math.pow(10, numDigits) - ((int)Math.pow(10, numDigits-1)))) + ((int)Math.pow(10, numDigits-1));
int temporary = numDigits;
for (int i = 0; i < numDigits; i++){
secretNumber[i] = (int)(number/(Math.pow(10, temporary--))); //here's where the exception is thrown!
if (number < 10)
break;
number = number%((int)(Math.pow(10, temporary--)));
temporary--;
}
}

大家好,我遇到了一个问题,需要一些帮助。我已经编写(并正在调试)一个程序,该程序生成一个数字,将该数字放入一个数组中,然后将用户的猜测与该数字进行比较。我遇到的问题是,当计算机生成数字时,我将其放入的数组会抛出索引越界的异常。这必定意味着(据我所知)该指数低于零。但是当我单独运行程序并检查索引时,它从 0 开始。所讨论的方法独立运行并生成数组而不引发异常,但是当从“母程序”调用它时,会引发异常。它指向代码中在循环内填充数组的行。

任何帮助将不胜感激:)

最佳答案

您需要确保 numDigits 始终等于 secretNumber 数组中的元素数量:

public void setNumDigits(int numDigits){
this.numDigits=numDigits;
// Add this line
secretNumber = new int[numDigits];
}

目前,您可以将 numDigits 设置为大于数组大小的值。这可能会导致 secretDigits 上的 for 循环中出现错误,该循环受 numDigits 限制。

关于java - 在另一个类中运行时,ArrayIndexOutOfBounds 存在,但不是预期的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800430/

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