[英]Declare array in java
当我在Java中声明数组时,运行时会出现此错误:线程“ main”中的异常java.lang.ArrayIndexOutOfBoundsException。 尽管变量totalNumbers有一个值。 当我将该变量替换为5这样的数字时,它就起作用了。声明数组时,它必须是数字吗?
int randomNumbers[];
randomNumbers = new int[totalNumbers];
添加了更多代码,但是变量名称和注释为瑞典语! 但是尽管如此,也许代码还是可能被理解了! 或者为什么不学习一些瑞典语!= :)
// deklarera arrays för tal under 500 och för tal över 500
int slumptalMindre[];
slumptalMindre = new int[antalSlumptalMindreÄn500];
int slumptalStörre[];
slumptalStörre = new int[antalSlumptal - antalSlumptalMindreÄn500];
//gå genom första array och omplacera tal till ny array
for(int x = 0; x < antalSlumptal; x++) {
if(slumptal[x] < 500) {
slumptalMindre[x] = slumptal[x];
}
}
将一些值放在数组中..... IndexOutOfBoundsException异常通常在调用该数组地址时出现,这是不可用的
要了解如何初始化数组视图, 请单击此处
您没有发布antalSlumptalMindreÄn500
和antalSlumptal
可能的值,但是根据您的代码,我假定两者均为正,并且antalSlumptal
> antalSlumptalMindreÄn500
。
即让antalSlumptal = 20和antalSlumptalMindreÄn500= 5。
那么数组slumptalMindre的长度是5,而slumptalStörre的长度是15。但是没有数组slumptal
声明。
在for循环变量x的范围从0到19,并且在每次迭代中,您slumptalMindre
使用索引x访问数组slumptalMindre
。 显然,当x值变为5时,这会导致ArrayIndexOutOfBoundsException。
我只能猜测你的意图是什么。 似乎您想对数组不slumptal
使用一些过滤器,并将所有小于500的值放在另一个数组中。
使用数组作为过滤结果的一个问题是,您不知道循环结束后结果的长度。 但是您必须事先初始化数组。
因此,一种解决方案是使用两个循环。 第一个循环遍历数组并计算小于500的数字。然后以正确的大小初始化数组,第二个循环再次遍历数组并将结果值复制到结果数组。 在第二个循环中,您必须谨慎区分访问数组不正确的索引和访问较短结果数组的索引:
// count the numbers less than 500
int count = 0;
for(int x = 0; x < slumptal.length; x++) {
if(slumptal[x] < 500)
count++;
}
slumptalMindre = new int[count];
int y = 0; // Index to access array slumptalMindre
for(int x = 0; x < slumptal.length; x++) {
if(slumptal[x] < 500)
slumptalMindre[y++] = slumptal[x];
}
但是上面的解决方案不是最佳的,因为您必须遍历数组两次。 这仅是因为结果应为固定长度的数组。 在这种情况下,使用动态大小的数据结构(如List
会更容易:
// Using a ArrayList of Integer values as the result
List<Integer> slumptalMindre = new ArrayList<Integer>();
for(int x = 0; x < slumptal.length; x++) {
if(slumptal[x] < 500)
slumptalMindre.add(slumptal[x]);
}
关于编码风格的另一提示:在Java的变量名和类名中使用Umlauts是有效的。 但是这样做被认为是不好的风格,因为您很容易遇到问题。 除非您指定-encoding
选项,否则Java编译器将平台默认编码用于源文件。 在Windows上,默认编码为Cp1252,在Linux上通常为UTF-8。 如果Umlauts是类名的一部分,情况会变得更糟,因为这会导致包含Umlauts的类文件名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.