这个问题已被问过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/