Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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 在我的for循环中获取BoundsException阵列_Java_Arrays_Loops_For Loop - Fatal编程技术网

Java 在我的for循环中获取BoundsException阵列

Java 在我的for循环中获取BoundsException阵列,java,arrays,loops,for-loop,Java,Arrays,Loops,For Loop,由于错误您检查名称数组的边界,并访问重力和重量,假设它们与名称长度相同或更大,您检查名称数组的边界,并访问重力和重量,假设它们具有相同或更大的长度长度为names您的问题从takeFromFile开始,它接收一个空数组(double[]gravity={};)并返回一个空数组 随后,在重力(或重力)数组上迭代的所有循环都不会执行任何操作,而从0到names.length-1(在printResults中)迭代的循环会导致ArrayIndexOutOfBoundsException,因为它假定名称

由于错误

您检查
名称
数组的边界,并访问
重力
重量
,假设它们与
名称

长度相同或更大,您检查
名称
数组的边界,并访问
重力
重量
,假设它们具有相同或更大的长度长度为
names

您的问题从
takeFromFile
开始,它接收一个空数组(
double[]gravity={};
)并返回一个空数组


随后,在
重力
(或
重力
)数组上迭代的所有循环都不会执行任何操作,而从0到
names.length-1
(在
printResults
中)迭代的循环会导致
ArrayIndexOutOfBoundsException
,因为它假定
名称
重力
数组具有相同的长度。

您的问题从
takeFromFile
开始,它接收一个空数组(
double[]gravity={};
)并返回一个空数组


随后,在
重力
(或
重力
)数组上迭代的所有循环都不会执行任何操作,而从0到
names.length-1
(在
printResults
中)迭代的循环会导致
ArrayIndexOutOfBoundsException
,因为它假定
名称
重力
数组具有相同的长度
是一个空数组,因此必须像其他数组一样填充它

double[]gravity={}
是一个空数组,因此必须像其他数组一样填充它

修改代码以处理对象和列表。它变得更加清晰:

java.lang.ArrayIndexOutOfBoundsException: 1
    at WeightOnPlanetsV1.printResults(WeightOnPlanetsV1.java:45)
    at WeightOnPlanetsV1.main(WeightOnPlanetsV1.java:63)
类行星{
字符串名;
地球上的双重重量;
双重重力;
双质量;
公共星球(…){…}//构造函数。
}
公共静态void main(字符串[]args)引发IOException{
列表行星=新的ArrayList();
添加(新行星(…);
...
}

修改代码以处理对象和列表。它变得更加清晰:

java.lang.ArrayIndexOutOfBoundsException: 1
    at WeightOnPlanetsV1.printResults(WeightOnPlanetsV1.java:45)
    at WeightOnPlanetsV1.main(WeightOnPlanetsV1.java:63)
类行星{
字符串名;
地球上的双重重量;
双重重力;
双质量;
公共星球(…){…}//构造函数。
}
公共静态void main(字符串[]args)引发IOException{
列表行星=新的ArrayList();
添加(新行星(…);
...
}
基本上,您可以初始化:
double[]重力={}在主函数中

然后调用:
double[]gravities=takeFromFile(gravity)由于重力没有任何元素,而且在takeFromFile(double[])函数中有以下内容:

class Planet {
    String name;
    double weightOnPlanet;
    double gravity;
    double mass;
    public Planet(...) { ... } // Constructor.
}

public static void main(String[] args) throws IOException {
    List<Planet> planets = new ArrayList<>();
    planets.add(new Planet(...));
    ...
}
for(int i=0;i
它基本上读取文件gravity.lenght次(顺便说一句,这是一个非常糟糕的主意。如果文件的数字小于gravity的长度[],则会出现另一个错误)

无论如何,正如前面有人所说,这一切都会导致重力和重力为空,最终权重[]也是如此,因为您使用以下方法初始化它:

double[]最终重量=计算重量(重力、质量)

既然万有引力只有0个元素。。。嗯,这是常有的事。 现在,names[]有9个元素,大于0,这就是为什么在中:

System.out.printf(“%5s%10f%15f\n”,名称[i]、重力[i]、重量[i])

您将获得ArrayOutOfBounds异常(因为您没有检查重力[]或重量[]大小,结果都是0)。这意味着您需要确保使用比名称[]更大的长度初始化gravity[]

我个人会重写代码。创建一个名为“Planet”的对象,该对象具有质量、重力和名称属性,并在该对象内具有与函数相同的函数calcWeight()或calcWeight(双质量)。然后,您可以在主函数中创建Planet[]数组,还可以使用它intakeFromFile(Planet[]planets),通过文件all planets数组而不仅仅是权重初始化。但这只是我的偏好。

基本上,您可以初始化:
double[]重力={}在主函数中

然后调用:
double[]gravities=takeFromFile(gravity)由于重力没有任何元素,而且在takeFromFile(double[])函数中有以下内容:

class Planet {
    String name;
    double weightOnPlanet;
    double gravity;
    double mass;
    public Planet(...) { ... } // Constructor.
}

public static void main(String[] args) throws IOException {
    List<Planet> planets = new ArrayList<>();
    planets.add(new Planet(...));
    ...
}
for(int i=0;i
它基本上读取文件gravity.lenght次(顺便说一句,这是一个非常糟糕的主意。如果文件的数字小于gravity的长度[],则会出现另一个错误)

无论如何,正如前面有人所说,这一切都会导致重力和重力为空,最终权重[]也是如此,因为您使用以下方法初始化它:

double[]最终重量=计算重量(重力、质量)

既然万有引力只有0个元素。。。嗯,这是常有的事。 现在,names[]有9个元素,大于0,这就是为什么在中:

System.out.printf(“%5s%10f%15f\n”,名称[i]、重力[i]、重量[i])

您将获得ArrayOutOfBounds异常(因为您没有检查重力[]或重量[]大小,结果都是0)。这意味着您需要确保使用比名称[]更大的长度初始化gravity[]


我个人会重写代码。创建一个名为“Planet”的对象,该对象具有质量、重力和名称属性,并在该对象内具有与函数相同的函数calcWeight()或calcWeight(双质量)。然后,您可以在主函数中创建Planet[]数组,还可以使用它intakeFromFile(Planet[]planets),通过文件all planets数组而不仅仅是权重初始化。但这只是我的偏好。

当您遇到此异常时,是否尝试将异常打印到Eclipse的控制台?当您遇到此异常时,是否尝试打印i
 for (int i = 0; i < gravity.length; i++) {
    gravity[i] = inFile.nextDouble();
    gravity[i] = gravity[i] / 10;
}