在java代码中循环内增加问题

时间:2013-07-24 00:19:23

标签: java while-loop

我最近开始尝试完成一些UVA问题,但是我第一次陷入困境。问题是3n + 1.我已经能够取得一些进展并且几乎完成了除增量之外所需的内容。

InputStreamReader inputStream = new InputStreamReader(System.in);
BufferedReader buffReader = new BufferedReader(inputStream);

try 
{ 
    String input = buffReader.readLine();
    String[] brokenArray = input.split("\\s");
    int a = Integer.parseInt(brokenArray[0]);
    int b = Integer.parseInt(brokenArray[1]); 
    int c = 1;
    System.out.print(a +" "+b+" "); 

    //if( a <= b )

    while ( a!= b) {
        while (a != 1) { 
            if((a%2)!= 0) {
                c++;
                a = 3*a+1;
            } else {
                c++;
                a = a/2;
            } 
        }
        System.out.println(c); 
        **a ++;**   
    }

所以基本上它应该采取2个输入并运行一个计数,这是执行的操作的c ..但是在完成对一个数字的操作计数之后,它必须移动到第二个数字因此我放了一个增加继续前进到下一个。它在第一次递增但是底部的变量a保持为1,因此我不断地使用一个而不是增加2,3等等。

2 个答案:

答案 0 :(得分:2)

你的内部循环将始终确保a == 1结束时(因为它在a != 1时循环,因此它仅在a == 1时结束)。然后,您的外循环在重复之前递增a。这就是为什么你总是递增1。因此,除非b == 2,否则总是会卡住。

答案 1 :(得分:0)

这里是实际问题,样本输入和样本输出的链接..

http://uva.onlinejudge.org/external/1/100.pdf

但是谢谢你们,为了解决这个问题......我必须初始化一个新的变量。