无法停止读取 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
}
有人问过这个问题 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
}