这段代码可以更有效吗?

时间:2011-05-18 16:59:21

标签: java loops while-loop

本程序应该这样做

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 个答案:

答案 0 :(得分:1)

您可以使用单个变量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++

答案 1 :(得分:0)

如果必须使用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++;
}

}
}

答案 2 :(得分:0)

你有一个太多的while循环(你的&#34; process2&#34; while循环是不必要的)。您似乎也有一些错误与您在内部循环中循环的变量不会在每次迭代时重新初始化有关。

我还建议不要使用while循环;你的例子更适合for循环;我知道你正在尝试学习循环机制,但学习的一部分也应该是决定何时使用哪个结构。这实际上不是绩效建议,而是一种方法建议。

对于您要做的事情,我没有任何进一步的绩效改进建议;你可以明显地删除循环(下降到单个甚至没有循环),但是两个循环对你正在做的事情有意义(允许你轻松地将另一行或列添加到输出中,只需要很少的更改)。

答案 3 :(得分:0)

您可以尝试循环展开,类似于@Vincent Ramdhanie的回答。

然而,循环展开和线程不会对这么小的样本产生显着的性能提升。创建和启动线程(进程)所涉及的开销比简单的while循环花费更多时间。 I / O的开销将比展开的版本节省更多的时间。复杂程序比简单程序更难调试和维护。

您的想法被称为微优化。保存较大程序的优化,并且仅在无法满足要求或客户要求时才这样做。