Это мой код

public String toString() {
    String B = A[0] + " ";
    for (int w = 1; w < this.A.length; w-=-1) {
        B += A[w] + " ";
        if(w % 4 == 0)
            B += "\n";
    }
    return B;
}

Я пытаюсь создать строку, в которой есть каждый элемент моего массива, и после каждого четвертого элемента добавляется новая строка. Вывод должен быть примерно таким:

AA BB CC DD
EE FF GG HH
II JJ KK LL
MM NN OO PP

Я пишу метод toString для класса Java. Массив имеет 52 элемента. Вместо этого я продолжаю получать это в качестве вывода:

1S 4S 6S 2S 8S 
8S 7S 3S 7S 
6S 8S 5S 6S
3C 3C 1C 8C 
8C 9C 4C 
2
LoopGod 17 Фев 2020 в 19:50

2 ответа

Лучший ответ

Все, что вам нужно сделать, это:

String B = A[0] + " ";
for (int w = 1; w < this.A.length; w-=-1) {
    if (w % 4 == 0) {
        B += "\n";
    }
    // this line is after the check because you already added the first
    // element to the string before the loop
    B += A[w] + " ";
}

Также : добавление к String в цикле является дорогостоящей операцией, поскольку строки в java являются неизменяемыми. Используйте StringBuilder вместо этого. Подробнее здесь.

Я не понимаю w-=-1 за w++.

1
Harshal Parekh 17 Фев 2020 в 17:05

Использование StringBuilder:

private static void printArray(String[] array) {
    StringBuilder sb = new StringBuilder();
    for(int i = 0; i < array.length; i++) {
        if(i > 0 && i % 4 == 0) {
            sb.append("\n");
        }
        sb.append(array[i]);
        sb.append(" ");
    }
    System.out.println(sb);
}
1
falknis 18 Фев 2020 в 07:13