0

这里我需要编写一个方法 printArray 来显示数组num的内容并显示数组的内容,每个数字用空格分隔。我必须在每 20 个元素之后开始一个新行。

我写了这段代码,但是每当我尝试执行它时,它都会显示没有新行的数组

public class project2 {

    public static void main(String[] args) {

        int num []= new int [100];

        for (int i=0;i<num.length;i++){

            num[i]=-1;
            num[7]=7;
        }


        printArray(num);
        System.out.println(num);


    }

    public static void printArray (int array1[]){

        int count =20;
        for (int x=0;x<array1.length;x++){

            System.out.print(array1[x]+" ");
            if (array1[x]==count){

                System.out.println(" ");
                count=array1[x]+count;

            }

        }
    }
}
4

5 回答 5

1
import java.util.Arrays;
import java.util.Random;

public class project2 {

  public static void main(String[] args) {

    int num[] = new int[100];

    Random random = new Random();
    for (int i = 0; i < num.length; i++) {

      num[i] = random.nextInt(100);
    }


    printArray(num);

    System.out.println('\n' + Arrays.toString(num));
  }

  public static void printArray(int array1[]) {

    int count = 20;
    for (int i = 0; i < array1.length; i++) {

      System.out.printf("%2d ", array1[i]);
      if ((i + 1) % count == 0) {

        System.out.println("");
      }

    }
  }
}
于 2013-01-24T09:25:35.443 回答
0

问题在于
if (array1[x]==count)
您正在count与数组中存在的值进行比较。而是将其与所需的计数进行比较,即 20 或使用其他答案/评论中建议的模运算符。

int count = 1;
for (int x=0;x<array1.length;x++){

    System.out.print(array1[x]+" ");

    if (count == 20){    // Check if its 20th element 
       System.out.println(" ");
       count=1;  // reset count 
    }
   count++;
}
于 2013-01-24T09:15:54.290 回答
0

您应该使用更适合您的用法的模(或余数)运算符 ( %):

for (int x=0;x<array1.length;x++){
    System.out.print(array1[x]+" ");
    if (x>0 && (x%count)==0){
        System.out.println(" ");
    }

}

这样,您将在每个count字符中获得一个新行,而第一行将没有它(这就是x>0检查存在的原因)。

此外,在原始帖子中,坦率地说,这条线非常糟糕:

count=array1[x]+count;

它会做什么?为什么要将存储在数组中的值添加到固定计数器?考虑到这条线,我建议你真的应该坐下来,试着想想事情在后台是如何运作的......没有魔法!

于 2013-01-24T09:17:51.623 回答
0

仔细看看你的 if 语句:

if (array1[x]==count)

根据您的数组值,这将永远不会返回 true

于 2013-01-24T09:17:52.093 回答
0

我必须在每 20 个元素后开始一个新行。

更改为以下代码:

if (x%20 == 0)
{
    System.out.println();
}

代替

if (array1[x]==count)
{
    System.out.println(" ");
    count=array1[x]+count;
}
于 2013-01-24T09:18:15.730 回答