【问题标题】:Array index out of bounds but shouldn't be数组索引超出范围但不应该
【发布时间】:2012-08-12 22:56:43
【问题描述】:

我正在制作一个非常简单的 java 程序,但出现以下错误(其中 n 是基于控制台先前输入的随机数):

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: n

应该引起麻烦的是这里的 if 语句:

for(int i = 0; 0 < x; i++){
    if(TalArray[i] < min){
         min = TalArray[i];
    }
}

变量“min”先前被初始化为 TalArray[0] 并跟踪最小的数字。所有提到的变量都是整型变量

【问题讨论】:

  • 如果x 是一个正数,0 &lt; x始终true,并且您的循环将永远不会终止,除非x 在循环中变为负数.你不是说i &lt; x吗?
  • 循环确实终止了 - 通过抛出 ArrayIndexOutOfBoundsException

标签: java arrays exception indexoutofboundsexception


【解决方案1】:

正确的代码是……

for(int i = 0; i < x; i++){
    if(TalArray[i] < min){
        min = TalArray[i];
    }
}

【讨论】:

  • oups :S 我觉得很尴尬^^'
【解决方案2】:

不清楚代码中x的值是什么,但无论如何循环条件应该是这样的:

for (int i = 0; i < TalArray.length; i++)

或者像这样,避免在每次迭代时访问长度:

for (int i = 0, x = TalArray.length; i < x; i++)

0 &lt; x 比较是错误的:你没有在循环内部修改x 的值,所以循环要么进入无限循环,要么根本不进入循环,这取决于@ 的初始值987654326@.

【讨论】:

    【解决方案3】:

    问题是,您的变量 X 永远不会改变,所以 你的条件0 &lt; x 始终是true

    我猜正确的条件是

    for(int i = 0; i < x; i++)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多