2 Stimmen

Ein Array mit 10 Elementen in jeder Zeile ausgeben

Ich habe gerade ein Array mit 100 initialisierten Werten erstellt und möchte 10 Elemente in jeder Zeile ausdrucken, so dass es etwa so aussehen würde

0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16
...26

Dies ist der Code, den ich verwendet habe, und ich habe es für die ersten 10 Elemente geschafft, aber ich konnte nicht herausfinden, wie man es für den Rest macht

public static void main(String[] args) {

    int[] numbers = { 0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};  
    int i, count = 0;

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

        System.out.print(numbers[i] + " ");
        count++;

        if (count == 9)
            for (i = 9; i < numbers.length; i++)
                System.out.println(numbers[i] + " ");
    }
}

5voto

polygenelubricants Punkte 362173
    int[] numbers = new int[100];
    for (int i = 0; i < numbers.length; i++) {
        if (i % 10 == 0 && i > 0) {
            System.out.println();
        }
        System.out.print(numbers[i] + " ");
    }

Dies druckt einen Zeilenumbruch vor dem Ausdruck numbers[i]i % 10 == 0 y i > 0 . % ist der Mod-Operator; er gibt den Rest zurück, wenn i / 10 . Also i % 10 == 0 wenn i = 0, 10, 20, ... .


Was Ihren ursprünglichen Code betrifft, so können Sie ihn mit einer kleinen Änderung wie folgt zum Laufen bringen:

int count = 0;
for (int i = 0; i < numbers.length; i++) {
   System.out.print(numbers[i] + " ");
   count++;
   if (count == 10) {
     System.out.println();
     count = 0;
   }
}

Im Grunde genommen, count ist, wie viele Zahlen Sie in dieser Zeile gedruckt haben. Sobald die Zahl 10 erreicht ist, wird ein Zeilenumbruch gedruckt, und dann wieder auf 0 zurücksetzen denn Sie beginnen eine neue Zeile, und für diese Zeile haben Sie (noch) keine Zahlen gedruckt.


Beachten Sie, dass in den beiden obigen Lösungen am Ende jeder Zeile ein zusätzliches Leerzeichen gedruckt wird. Hier ist eine flexiblere Implementierung, die nur bei Bedarf Trennzeichen (horizontal und vertikal) verwendet. Es ist nur leicht komplizierter.

static void print(int[] arr, int W, String hSep, String vSep) {
    for (int i = 0; i < arr.length; i++) {
        String sep =
            (i % W != 0) ? hSep :
            (i > 0)      ? vSep :
            "";
        System.out.print(sep + arr[i]);
    }
    System.out.println(vSep);
}

Wenn Sie dies sagen, wie print(new int[25], 5, ",", ".\n"); , dann werden 25 Nullen gedruckt, 5 in jeder Zeile. Es gibt einen Punkt ( . ) am Ende jeder Zeile, und ein Komma ( , ) zwischen Nullen auf einer Linie.

3voto

rsp Punkte 22749

Warum verwenden Sie 2 verschachtelte Schleifen, wenn Sie sich nur merken müssen, an welchen Stellen Sie einen Zeilenumbruch ausgeben müssen? Außerdem verwenden Sie die gleiche Variable i für beide Schleifen wird nicht das tun, was Sie erwarten.

Wie wäre es damit:

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

    System.out.print(numbers[i] + " ");
    count++;

    if (count == 10)
        System.out.print("\n");
        count = 0;
    }
}

1voto

Alles, was Sie tun müssen, ist, nach jeweils zehn Zahlen einen Zeilenumbruch auszudrucken.

for (i = 0; i < numbers.length; ++i)
{
    System.out.print(number[i]);
    if (i % 10 == 9)
    {
        System.out.println();
    }
    else
    {
        System.out.print(" ");
    }
}

0voto

ilkin Punkte 21

Ich weiß, dass dies eine alte Frage ist, aber ich wollte nur antworten. In Java 8 können Sie dies in einer Zeile tun. Arrays.stream(arr).forEach(s->System.out.print(s%10 > 0 ? s+" ":"\n"));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X