Как отформатировать таблицу умножения в 4 строки и столбца соответственно и проверить четность таблицы умножения чисел от 1 до 9? - PullRequest
1 голос
/ 03 мая 2020

Это код, который я попытался использовать с руководством по внешнему видео, которое не охватывало ожидаемый результат с точки зрения форматирования

  public class Lab3Class {

        public static void main(String[] args) {
            // TODO Auto-generated method stub

        int table = 1;

        while(table<10) {
             int i = 1;
             while(i<=10)
             {
                 System.out.println(table+ " * "+i+" = "+(table*i));
                 i++;
             }
            System.out.println("  ");
            table++;
        }

    }
    } 

1 Ответ

0 голосов
/ 03 мая 2020

Вы просто пропускаете проверку четных чисел, т.е. if (table % 2 == 0).

public class Main {
    public static void main(String[] args) {
        int table = 1;

        while (table < 10) {
            if (table % 2 == 0) {
                int i = 1;
                while (i <= 10) {
                    System.out.println(table + " * " + i + " = " + (table * i));
                    i++;
                }
            }
            System.out.println();
            table++;
        }
    }
}

В качестве альтернативы вы можете начать таблицу с 2 и увеличивать ее на 2 в каждой итерации следующим образом:

public class Main {
    public static void main(String[] args) {
        int table = 2;

        while (table < 10) {
            int i = 1;
            while (i <= 10) {
                System.out.println(table + " * " + i + " = " + (table * i));
                i++;
            }
            System.out.println();
            table += 2;
        }       
    }
}

Если вам нужно распечатать его в табличной структуре, вы можете написать циклы следующим образом:

public class Main {
    public static void main(String[] args) {
        for (int line = 1; line <= 10; line++) {
            for (int i = 2; i <= 10; i += 2) {
                System.out.print(i + "*" + line + "=" + (i * line) + "\t");
            }
            System.out.println();
        }
    }
}

Вывод:

2*1=2   4*1=4   6*1=6   8*1=8   10*1=10 
2*2=4   4*2=8   6*2=12  8*2=16  10*2=20 
2*3=6   4*3=12  6*3=18  8*3=24  10*3=30 
2*4=8   4*4=16  6*4=24  8*4=32  10*4=40 
2*5=10  4*5=20  6*5=30  8*5=40  10*5=50 
2*6=12  4*6=24  6*6=36  8*6=48  10*6=60 
2*7=14  4*7=28  6*7=42  8*7=56  10*7=70 
2*8=16  4*8=32  6*8=48  8*8=64  10*8=80 
2*9=18  4*9=36  6*9=54  8*9=72  10*9=90 
2*10=20 4*10=40 6*10=60 8*10=80 10*10=100   

Как видите, с помощью for l oop он выглядит чище. Тем не менее, я рекомендую вам также попрактиковаться с while l oop. Как только вы обретете большую уверенность, я также рекомендую использовать String :: format или System.out.printf для лучшего форматирования.

Это очень маленький набор данных, но если набор данных огромен, вы может улучшить производительность за счет сокращения операций ввода-вывода. Для этого вы можете добавить результат к StringBuilder и распечатать его только один раз в конце.

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int line = 1; line <= 10; line++) {
            for (int i = 2; i <= 10; i += 2) {
                sb.append(i).append('*').append(line).append('=').append(i * line).append('\t');
            }
            sb.append('\n');
        }
        System.out.println(sb);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...