Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException_Java_Arrays - Fatal编程技术网

“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException

“线程中的异常”;“主要”;java.lang.ArrayIndexOutOfBoundsException,java,arrays,Java,Arrays,我是编程初学者。我刚上了几周的第一节编程课,所以请耐心听我说。我不是一个寻求帮助的人,所以我一直在寻找答案,但运气不佳。这也是我第一次在任何类型的论坛上发布任何东西,所以如果我的问题结构不正确,我很抱歉,我会在以后的帖子中更正 这就是我要解决的问题: 编写一个程序,声明一个包含50个“double”类型元素的数组“alpha”。初始化数组,使前25个元素等于索引变量的平方,最后25个元素等于索引变量的三倍。输出数组,以便每行打印10个元素 这是我在运行程序时得到的 Exception in th

我是编程初学者。我刚上了几周的第一节编程课,所以请耐心听我说。我不是一个寻求帮助的人,所以我一直在寻找答案,但运气不佳。这也是我第一次在任何类型的论坛上发布任何东西,所以如果我的问题结构不正确,我很抱歉,我会在以后的帖子中更正

这就是我要解决的问题:

编写一个程序,声明一个包含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;
        }
    }
}
}

提前感谢您的帮助。我不想为自己做这件事,我只是被卡住了,需要帮助找到我的方向。

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

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

   }

for(i=0;i首先,您应该了解循环,在这种情况下,最适合的是
for
循环。例如,让我们用从0开始的递增值初始化整个表:

final int SIZE = 10;
int[] array = new int[SIZE];
for (int i = 0; i < SIZE; i++) {
    array[i] = i;
}
final int SIZE=10;
int[]数组=新的int[SIZE];
对于(int i=0;i
现在,您可以修改它以根据分配使用值初始化表。 但是,如果将条件
i
替换为
i<11
,会发生什么情况?那么,当您尝试访问(在某个点)时,您将得到
IndexOutOfBoundException
索引为10的对象,但10元素数组中的最高索引为9。因此,换句话说,您正在尝试查找编号为11的朋友的家,但街上只有10所房子


对于您所展示的代码,肯定还有更多,因为您无法从该代码中获取此错误(异常)。

ArrayIndexOutOfBoundsException简单地说,就是->您班上有10名学生(int数组大小为10),您想查看第11名学生(不存在的学生)的值

如果你把这个int设为i[3],那么i取值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++) {

    }
double[]数组=新的double[50];
对于(int i=0;i<24;i++){
}
对于(int j=25;j<50;j++){
}

我仍然记得编程课程的前几周,我完全理解您的感受。以下是解决您问题的代码。为了从这个答案中学习,请尝试运行它,在循环中添加几个“打印”,以便您可以看到变量的进度

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"); 

    }
}
import java.util.*;
导入java.lang.*;
公开课foo
{
公共静态void main(字符串[]args)
{ 
double[]alpha=新的double[50];
整数计数=0;

对于(int i=0;iI没有得到异常,我得到了结果
0.0
。我觉得您的代码中缺少了一些东西,它无法编译,并且在当前状态下无法抛出
ArrayIndexOutOfBoundException
。您是否忘记了
for
while
语句?调试器对ArrayIndexOut非常有用OfBounds此代码无法编译。1.你在哪里尝试平方数?2.你在哪里尝试迭代数组元素?代码看起来几乎就像你的
for
,而
是用看不见的墨水编写的。出于某种原因,这是我的for语句的内容,它与其余代码一起粘贴。for(i=0;i