java - 无法停止读取java中的输入

标签 java java.util.scanner inputstream bufferedreader

这个问题已被问过here & here但两者都不适合我。那些包含在循环内的 br.readLine() 或 scn.nextInt() ;我的没有。 以下代码检查阿姆斯特朗数字:

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
}

关于java - 无法停止读取java中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56641316/

相关文章:

java - 使用 JLabel 显示所选图像文件时出现的问题

java - 扫描文件中的模式

java - 具有正确路径的 netbeans 空指针异常

java - Hbase连接池

使用 Play 框架 2.3 时出现 java.lang.IllegalArgumentException

java - 在 NetBeans 中动态更改小部件的图标

java - 如何使用 Scanner.hasNextInt() 检查接下来的 3 个输入是否为 int 并仅在 java 中循环

android - android中输入流的空指针异常

java - HttpInputStream read() 方法失败

c# - 如何在 C# 中将 Stream 转换为 byte[]?