线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常

时间:2014-02-08 18:08:11

标签: java arrays

我是编程的初学者。我进入我的第一个编程课几周,所以请耐心等待。我不是一个寻求帮助的人,所以我一直在寻找一个没有运气的答案。这也是我第一次在任何类型的论坛上发布任何内容,所以如果我的问题结构已经关闭,我很抱歉,我会纠正以后的帖子。

这是我要解决的问题:

  

编写一个程序,声明一个50个“double”元素的数组“alpha”。初始化数组,使前25个元素等于索引变量的平方,最后25个元素等于索引变量的三倍。输出数组,以便每行打印10个元素。

这是我在运行程序时得到的。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:50 on line 23 

这是我正在处理的代码

import java.util.*;
import java.lang.*;
public class ProgrammingProblem5_4
{
    public static void main(String[] args)
    { 
        int i=0;
        int count=0;
        double[] alpha = new double[50];


        if (i >= 25)
            alpha[i] = 3*i;
        System.out.print(alpha[i]+ " ");   
        count++;
        if (count==10) {
            System.out.println("/n");
            count=0;
        }
    }
}
}

提前感谢您的帮助。我不打算为我做这件事,我只是被困住了,需要帮助找到我的路。

4 个答案:

答案 0 :(得分:1)

我没有看到任何for循环来使变量初始化。你可以做这样的事情。

for(i=0;i<50;i++){
 /* Code which is necessary with a simple if statement*/

   }

答案 1 :(得分:0)

首先你应该学习循环,在这种情况下,最合适的是for循环。例如,让我们用从0开始的递增值初始化整个表:

final int SIZE = 10;
int[] array = new int[SIZE];
for (int i = 0; i < SIZE; i++) {
    array[i] = i;
}

现在您可以修改它以根据您的分配使用值初始化您的表。 但是如果用i < SIZE替换条件i < 11会发生什么?好吧,你会得到IndexOutOfBoundException,因为你试图访问(在某些时候)索引10下的一个对象,但是10元素数组中的最高索引是9.所以你要尝试,换句话说,找到朋友的家11号,但街上只有10间房子。

如果您提供了代码,那么必须有更多代码,因为您无法从该代码中获得此错误(异常)。

答案 2 :(得分:0)

简单词中的

ArrayIndexOutOfBoundsException 是 - &gt;你班上有10名学生(int array size 10),你想查看第11名学生(不存在的学生)的价值

如果你做这个int i [3]然后我取值i [0] i [1] i [2]

为您的问题尝试此代码结构

double[] array = new double[50];

    for (int i = 0; i < 24; i++) {

    }

    for (int j = 25; j < 50; j++) {

    }

答案 3 :(得分:0)

我还记得编程课程的前几周,我完全理解你的感受。这是解决您的问题的代码。为了从这个答案中学习,尝试运行它在循环中添加几个'print',这样你就可以看到变量的进度。

import java.util.*;
import java.lang.*;

public class foo
{

   public static void main(String[] args)
   { 
      double[] alpha = new double[50];
      int count = 0;

      for (int i=0; i<50; i++)
      {
          // System.out.print("variable i = " + i + "\n");
          if (i < 25)
          {
                alpha[i] = i*i;
          }
          else {
                alpha[i] = 3*i;
          }

          if (count < 10)
          {
            System.out.print(alpha[i]+ " "); 
          }  
          else {
            System.out.print("\n"); 
            System.out.print(alpha[i]+ " "); 
            count = 0;
          }

          count++;
      }

      System.out.print("\n"); 

    }
}