创建一个程序来生成随机数并将它们放在偶数或奇数数组中,但得到上面相同的错误信息?如果有人知道如何更好地格式化请帮助!
import static java.lang.Math.*;
import java.util.Random;
public class Unit8
{
public static void main ( String [ ] args )
{
int [ ] randomNum = new int [100] ;
for ( int x = 0; x <= randomNum.length; x++ )
{
randomNum [ x ] = (int) (Math.random ( ) * 25 );
}
int sum = 0;
int [ ] oddArray = new int [ 100 ] ;
for ( int x = 0; x <= randomNum.length; x++ )
{
if (randomNum [ x ] % 2 != 0 )
sum += oddArray [ x ];
}
int sum2 = 0;
int [ ] evenArray = new int [ 100 ] ;
for ( int x = 0; x <= randomNum.length; x++ )
{
if (randomNum [ x ] % 2 == 0 )
sum2 += evenArray [ x ] ;
}
display ( oddArray );
display1 ( evenArray );
}
public static void display ( int [ ] oddArray)
{
System.out.println ( oddArray );
}
public static void display1 ( int [ ] evenArray )
{
System.out.println ( evenArray );
}
}
答案 0 :(得分:4)
您的 for loops 是罪魁祸首。条件不应该是<=
,而只是<
。
替换: -
for ( int x = 0; x <= randomNum.length; x++ )
: -
for ( int x = 0; x < randomNum.length; x++ )
因为您不想访问索引 - randomNum.length
,因为它将是OutOfBounds
。
答案 1 :(得分:1)
此行导致错误
for ( int x = 0; x <= randomNum.length; x++ )
在java数组索引从0开始,数组randomNum的索引从0到99. randomNum.length返回数组可以容纳的元素数,即100。
通过x <= randomNum.length;
在for循环中,您尝试访问数组中的第101个(randomNum [100])元素;哪个不存在,因此异常
所以替换for循环以包含for ( int x = 0; x < randomNum.length; x++ )
答案 2 :(得分:1)
错误在于:
for (int x = 0; x <= randomNum.length; x++) {
你应该把它改成:
for (int x = 0; x < randomNum.length; x++) {
答案 3 :(得分:0)
你在循环中使用&lt; = randomNum.length,它将从0到100。 你的数组randomNum确实启动它0,但它只有100个空格:它从0到99
将您的循环更改为: -
for (int x = 0; x < randomNum.length; x++) {
看一下,在你的“显示”功能中,你只能获得一个地址,你必须这样做
public static void display(int[] oddArray) {
for(int i=0; i<oddArray.length;i++)
System.out.println(oddArray[i]);
}
再往前看,你的功能全都搞砸了,你永远不会填补你的oddArray甚至是阵容。此外,您不需要三个循环,您可以在一个循环中完成。
我认为这是一个功课,所以我不会给你一个完整的工作代码,但祝你好运
答案 4 :(得分:0)
这是你的错误:
for ( int x = 0; x <= randomNum.length; x++ )
应该是
for ( int x = 0; x < randomNum.length; x++ )
答案 5 :(得分:0)
下次调试时,只需在循环上放置一个断点并在调试模式下运行它。然后,您可以在逐行运行时检查值。
答案 6 :(得分:0)
我找到了和其他人一样的修复程序。但是,我还注意到你打印出2个仅包含数字0的数组。你根本没有使用随机数来更新偶数或奇数数组。此外,两种显示方法是相同的。您不需要为每个方法使用单独的方法,因为您可以使用display方法打印出两个数组。这也适用于变量。只要您不再使用它,就可以重用相同的变量(就像我编写的代码中的index
变量一样)。我更新了代码以简化它,并修复了您的所有错误,如下所示:
public class PrintOddAndEvenArrays {
public static void main(String[] args) {
int[] randomNum = new int[500];
for (int x = 0; x < randomNum.length; x++) {
randomNum[x] = (int) (Math.random() * 25);
}
int index = 0;
int[] oddArray = new int[100];
for (int x = 0; x < randomNum.length; x++) {
if(index == 100){
break;
}
if (randomNum[x] % 2 != 0){
oddArray[index] = randomNum[x];
index++;
}
}
index = 0;
int[] evenArray = new int[100];
for (int x = 0; x < randomNum.length; x++) {
if(index == 100){
break;
}
if (randomNum[x] % 2 == 0){
evenArray[index] = randomNum[x];
index++;
}
}
display(oddArray);
display(evenArray);
}
public static void display(int[] Array) {
for(int a = 0; a < Array.length-1;a++){
System.out.print(Array[a]+ ", ");
if(a == Array.length-2){
System.out.print(Array[a+1]);
}
}
System.out.print("\n");
}
}
为了将来参考,要自己调试,控制台中打印出的错误通常会告诉您要引用哪行来修复错误。首先了解错误是什么以及如何解决它。通常,通过快速Google搜索,您可以了解错误以及如何解决错误。然后,一旦您可以运行程序,请使用所需的输出检查输出并相应地进行更改。对于更复杂的错误,您必须自己进行调试,因为代码会更长,而且对其他人来说更难以理解。祝你好运!