2015-11-16 203 views
0

我无法弄清楚为什么我的循环不会继续。每次运行程序时,它只执行一次循环迭代。这while循环似乎不循环 - 循环中只有数学

我正在实施基于数学家刘易斯卡罗尔的算法,您从输入号码中删除最后一位数字,并从剩余数字形成的数字中减去它。例如,如果我输入数字48070输出是

48070 
4807 

它停在那里,而不是继续。

// The "Divisible_Dianik" class. 
import java.awt.*; 

public class Divisible_Dianik 
{ 

    public static void main (String[] args) 
    { 
     int userinput = 1; 
     int lastint; 
     int firstpart; 
     int output = 1; 

     while (output != 0) 
     { 
      userinput = In.getInt(); 
      lastint = userinput % 10; 
      firstpart = userinput/10; 
      output = firstpart - lastint; 
      System.out.println (output); 
      userinput = output; 
     } 

    } // main method 
} // Divisible_Dianik class 
+1

您是否尝试过使用print语句或调试器进行调试? –

+0

这就是我们在学校使用的输入整数的用户。 –

+0

然后它是'In.class'你拥有的不是吗?或者你有'In.java'?如果是这样,在这里粘贴代码 – Frakcool

回答

5

我要去假设In.getInt()是某种抽象从用户获得基于终端的反馈。它很容易被这种取代:

Scanner scan = new Scanner(System.in); 
// in the loop 
userinput = scan.nextInt(); 
scan.nextLine(); 

如果是这样的话,你不循环的原因是由于每次这种阻塞输入。你想要做的是将输入的请求移到循环的之外。

int lastint; 
int firstpart; 
int output = 1; 
Scanner scan = new Scanner(System.in); 
int userinput = scan.nextInt(); 
while (output != 0) { 
    lastint = userinput % 10; 
    firstpart = userinput/10; 
    output = firstpart - lastint; 
    System.out.println(output); 
    userinput = output; 
} 
+0

你张贴在我的中间写作完全一样.. – jso

+0

感谢它的工作!它甚至工作,如果我只是移动In.getInt ouside循环:) –

+1

@jso,这经常发生在SO上。 –