为什么我的程序不输出数字

时间:2014-01-12 19:47:47

标签: java arrays for-loop

我需要帮助才能使我的程序在 45 -5 之间输出 50 随机数。我不知道为什么它不输出。它必须使用数组。它也应该显示在 5 列中。

我的代码:

int randnum[]=new int[50];
    for(int i=0;i<=50;i++)
        randnum[i]=(int)(Math.random()*(45+5))-5;
        System.out.println(randnum[i]+"");

4 个答案:

答案 0 :(得分:4)

首先你错过了像@Reimeus这样的大括号 第二次您没有将i5进行比较,您尝试将i5分配。

您的代码应如下所示:

int randnum[]=new int[50];
for(int i=0; i<50; i++) { // <--- add { here & delete = in condition
    randnum[i]=(int)(Math.random()*(45+5))-5;
    if(i % 5 == 0) { // <--- add a = here & a modulo operator for 5 columns
        System.out.println("");
    }
    System.out.print(randnum[i]+" "); // <--- set your print down here
} // <--- add } here

更新#1:
您的数组有50个索引,从049您的for loop0迭代到50,向前迈进一步。所以你应该在这里运行i < 50,否则你将会超出界限。

否则你会在这里得到这样的东西:

java.lang.ArrayIndexOutOfBoundsException: 50

更新#2:
我添加了另一个if - 语句条件,并在此语句上方设置了print一行,以便您希望在 5列中发布。

答案 1 :(得分:1)

您错过了for语句的左大括号,这意味着println语句超出了循环范围。你也在if语句中使用了一个赋值。您需要使用==运算符来执行整数比较。

数组从零开始:使用数组length属性来避免当前发生的ArrayIndexOutOfBoundsException

最后,您可以使用模运算符将值打印到列中:

int randnum[] = new int[50];
for (int i = 0; i < randnum.length; i++) {
    randnum[i] = (int) (Math.random() * (45 + 5)) - 5;
    if (i % 5 == 0) {
        System.out.println();
    }
    System.out.print(randnum[i] + "\t"); 
} 

阅读:Summary of Operators

答案 2 :(得分:0)

你必须小心括号:

int randnum[]=new int[50];
for(int i=0;i<=50;i++)
{
    randnum[i]=(int)(Math.random()*(45+5))-5;
    System.out.println(randnum[i]+"");
    if(i==5)
        System.out.println("\n");
}

答案 3 :(得分:0)

你没有for语句的左括号。你还需要做“if(i == 5)”而不是“if(i = 5)”。 所以它应该是:

int randnum[]=new int[50];
for(int i=0;i<=50;i++){
randnum[i]=(int)(Math.random()*(45+5))-5;
System.out.println(randnum[i]+"");
if(i==5){
System.out.println("\n");
}
}