Может ли этот код быть более эффективным? - PullRequest
0 голосов
/ 18 мая 2011

Эта программа должна делать это

N 10*N 100*N 1000*N
1 10  100    1000
2 20  200    2000
3 30  300    3000
4 40 400     4000
5 50 500    5000

Так вот мой код:

public class ex_4_21 {

    public static void main( String Args[] ){

    int process = 1;
    int process2 = 1;
    int process22 = 1;
    int process3 = 1;
    int process33 = 2;

    System.out.println("N   10*N   100*N   1000*N");
    while(process<=5){

        while(process2<=3){
        System.out.printf("%d   ",process2);

        while(process22<=3){
            process2 = process2 * 10;
            System.out.printf("%d     ",process2);
            process22++;
        }
        process2++;
        }


        process++;
    }

    }
}   

Может ли мой код быть более эффективным?В настоящее время я учусь в то время как петли.Пока это то, что я получил.Может кто-нибудь сделать это более эффективным, или дать мне идеи о том, как сделать мой код более эффективным?

Это не домашняя работа, я сам изучаю Java

Ответы [ 4 ]

1 голос
/ 18 мая 2011

Вы можете использовать одну переменную n, чтобы сделать это.

 while(n is less than the maximum value that you wish n to be)
     print n and a tab
     print n * 10 and a tab
     print n * 100 and a tab
     print n * 1000 and a new line
     n++

если сила 10 является переменной, то вы можете попробовать это:

 while(n is less than the maximum value that you wish n to be)
    while(i is less than the max power of ten)
        print n * i * 10 and a tab
        i++
    print a newline
    n++
0 голосов
/ 18 мая 2011

Вы можете попробовать развернуть петлю, аналогично ответу @Vincent Ramdhanie.

Однако развертывание цикла и многопоточность не приведут к значительному улучшению производительности для такого маленького образца. Затраты на создание и запуск потоков (процессов) занимают больше времени, чем простой цикл while. Затраты на ввод-вывод потребуют больше времени, чем экономит развернутая версия. Сложную программу сложнее отладить и поддерживать, чем простую.

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

0 голосов
/ 18 мая 2011

У вас слишком много циклов while (ваш «process2», пока цикл не нужен). Похоже, у вас также есть некоторые ошибки, связанные с тем фактом, что переменные, по которым вы выполняете циклы во внутренних циклах, не реинициализируются с каждой итерацией.

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

У меня нет никаких предложений по улучшению производительности за то, что вы пытаетесь сделать; Очевидно, что вы можете удалить циклы (опускаясь до одного или даже без циклов), но два цикла имеют смысл для того, что вы делаете (позволяет легко добавить еще одну строку или столбец к выводу с минимальными изменениями).

0 голосов
/ 18 мая 2011

Если вы должны использовать цикл while

public class ex_4_21 {

public static void main( String Args[] ){

int process = 1;

System.out.println("N   10*N   100*N   1000*N");
while(process<=5){

    System.out.println(process + "  " + 10*process + "  " + 100*process + "  " + 1000*process + "\n");
    process++;
}

}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...