【发布时间】:2019-10-31 15:18:39
【问题描述】:
有人问过这个问题here 和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
【问题讨论】:
-
123 大于 0。所以这个 while 循环永远不会终止。
标签: java java.util.scanner inputstream bufferedreader