无法停止读取 java 中的输入

Can't stop reading input in java

有人问过这个问题 here & 但对我来说都没有用。那些包含在一个循环中的 br.readLine() or scn.nextInt();我的没有。 以下代码检查 Armstrong 编号:

import java.io.*;
class Armstrong {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String s;
        int val, sum = 0, sav, dig, len;
        System.out.print("Enter a number: ");
        s = br.readLine();
        val = Integer.parseInt(s);
        len = s.length();
        sav = val;
        while(val > 0) {
            dig = val % 10;
            sum += Math.pow(dig, len); //Math class comes under java.lang
        }
        if(sum == sav) {
            System.out.println(sum+" is an Armstrong Number");
        } else  {
            System.out.println(sum+" is NOT an Armstrong Number");
        }
    }
}

我尝试过的:
1. ^Z, ^C (杀死程序)
2. 使用readLine(), nextInt(), next() 等无济于事
3. 使用在线 GDB 编译器 - 结果相同。

输出结果如下: Does not stop...!

openjdk-8

你有一个无限循环:

while(val > 0){
    dig = val % 10;
    sum += Math.pow(dig, len); //Math class comes under java.lang
}

您应该更改 val 的值以跳出循环,可能在每次迭代时将其除以 10:

while(val > 0){
    dig = val % 10;
    val /= 10;
    sum += Math.pow(dig, len); //Math class comes under java.lang
}

你的代码中有一个无限循环:

while(val>0)
{
   //problem is here, val is not being changed so you are in an infinite loop
   dig=val%10;
   sum += Math.pow(dig,len); //Math class comes under java.lang
}