如何在数组中显示元素的位置?

时间:2014-11-19 15:02:33

标签: java

我的困境是在用户输入一个数字之后,然后检查该数字以查看它是否在数组中,如果是,我将让他们知道数组中的数字以及位置那个号码。我有它提示用户输入数字,但在那之后我得到ArrayIndexOutOfBoundsException错误。

这是我到目前为止所拥有的:

int [] iGrades = new int [30];

      System.out.print ("Enter the grades, when you're done input (-1) ");
      for (int i=0; i<iGrades.length;i++)
      {
          iGrades [i]= kb.nextInt();
          if (iGrades [i]< 0)
          {
              break;
          }
      }
      System.out.print ("\nEnter a grade to check if it's in the array");
      iVal = kb.nextInt();
      for(int i=0; i<=iGrades.length; ++i)
       {
            if(iVal == (iGrades[i]))
            {
                found = true;
                for(int j=0; j<=iGrades.length; ++j)
                {
                    iGrades[j]=j+1;
                }
                break;
            }

       }

      if (found == true)
      {

         System.out.println(iVal + " is in the array at position ");
      }
      else
      {
         System.out.println(iVal + " is NOT in the array.");
      }
   }   

任何帮助都会很棒。

4 个答案:

答案 0 :(得分:1)

问题出在你的第二个for循环中。此

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

<=更改为<

答案 1 :(得分:0)

例外情况已经说明了。您正在检查不再在数组范围内的索引。看看第二个for循环:

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

它从0到30运行。但是数组仅从0到29。你必须使用&lt;而是在这里:

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

答案 2 :(得分:0)

由于数组是从零开始的,所以

i<=iGrades.length

将允许i等于Grades.length,这是数组最后一个索引之后的一个。使用<

答案 3 :(得分:0)

<强>记住

数组索引从0 to length of array -1

开始

相应地更改循环

提示<=更改为<