java - 这个 while 循环似乎没有循环 - 循环中只有数学

标签 java

我不明白为什么我的循环无法继续。每次运行该程序时,它仅执行一次循环迭代。

我正在实现基于数学家 Lewis Caroll 的算法,其中您从输入数字中删除最后一位数字,然后从剩余数​​字形成的数字中减去它。例如,如果我输入数字 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

最佳答案

我假设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;
}

关于java - 这个 while 循环似乎没有循环 - 循环中只有数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745904/

相关文章:

java - 将字符串转换为 byte[] 返回错误值(编码?)

java - SAML 响应的 SAML2.0 签名验证失败

java - 前瞻和分组

java - 将 jlist 选择转换为字符串

java - Play Framework 清洁与清洁所有

java - 比较用于绘制网络拓扑的开源 Java 图形绘制框架(JUNG 和 Prefuse)

Java RMI : Pass remote object reference back to host

java - 多个字符串替换而不影响后续迭代中的替换文本

java - FasterXML 序列化,无需在 XML 中使用字段类型

java - 如何在java中正确分割一行