Работа с Java - печать четырех итераций на строку шириной 9 символов - PullRequest
3 голосов
/ 03 февраля 2020
// Write a program that uses a while loop to detect and print multiples of 13 or 17, but not both. Use the exclusive or operator as on page 93. 
// The program should start examining integers at 200, and examine successively larger integers until 16 multiples have been detected. 
// Correct multiples should be printed right aligned in fields that are 9 characters wide, but with only four multiples per line. 
// The total of all correct multiples should be reported after all 16 multiples have been printed.

package Programs5;

public class Program51 {

    public static void main(String[] args) {
        int main = 200, x = 0, y = 13, z = 17;
        while(x < 16) {
            main += 1;
            if(main % y == 0 ^ main % z == 0) {
                x += 1;
                System.out.print(main + " ");
            }
        }
    }

}

Когда я запускаю программу, logi c работает и правильно печатает каждый из них. Однако мне нужно напечатать четыре итерации в строке. Например:

x x x x

У меня проблемы с выяснением этого. Я предполагаю, что мне нужно всего oop своего рода из моего небольшого опыта в python, но я просто потерян в этот момент.

1 Ответ

3 голосов
/ 03 февраля 2020

Вы забыли выровнять поля по девяти символьным столбцам (я бы использовал printf и просто добавил разрыв строки, когда count кратно четырем). Я бы начал с сохранения результатов операций по модулю в локальных переменных. Кроме того, вам нужно сохранить промежуточный итог. Что-то вроде

int count = 0, total = 0, start = 200;
for (; count < 16; start++) {
    boolean mod13 = start % 13 == 0, mod17 = start % 17 == 0;
    if (mod13 ^ mod17) {
        if (count > 0) {
            if (count % 4 == 0) {
                System.out.println();
            } else {
                System.out.print(" ");
            }
        }
        total += start;
        System.out.printf("% 9d", start);
        count++;
    }
}
System.out.printf("%nTotal = %d%n", total);

Выходы

      204       208       234       238
      247       255       260       272
      273       286       289       299
      306       312       323       325
Total = 4331
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...