import java.util.*;
public class Main
{
public static void main(String [] args){
Scanner input = new Scanner(System.in);
int x = input.nextInt();
int sum = 0;
for(int I = 1; I <= x ; I ++){
if(x % I ==0){
sum += I ;
}
}
System.out.println ("The sum of the factors is " + sum);
}
}
该程序应该接收一个数字并打印出其因子的总和。然而,它是悬挂的。我将输入代码替换为简单的(int x = 10)代码,我得到了所需的答案(18)。
答案 0 :(得分:0)
在你执行Ctrl + D之前,这将永远不会完成执行,因为此处的输入是System.in
,从技术上讲,它没有“开箱即用”的结尾:
new Scanner(System.in);
答案 1 :(得分:0)
我尝试了你的代码并且它正在运行。我不确定你输入了什么。
我只是将其他系统用于查看备注
import java.util.*;
public class Main
{
public static void main(String [] args){
System.out.println("Show");
Scanner input = new Scanner(System.in);
System.out.println("In:");
int x = input.nextInt();
System.out.println("Out");
int sum = 0;
for(int I = 1; I <= x ; I ++){
if(x % I ==0){
sum += I ;
}
}
System.out.println ("The sum of the factors is " + sum);
}
}
这是我输入的输出是12345
Show
In:
12345
Out
The sum of the factors is 19776
答案 2 :(得分:0)
我认为你犯了一个我以前常犯的错误。当我在Eclipse或其他任何地方运行我的命令行程序时,没有任何东西被打印出来。我想,为什么F ** K你没跑,男人?我试图点击“运行”按钮几次,但我仍然得到相同的结果。
然后我打开调试器并逐步完成整个过程,看到它停在这一行:
int x = input.nextInt();
在那之后,我意识到我是多么愚蠢。控制台正在等我输入!
那么这里到底发生了什么?当程序运行到上面的行时,它会停止。等待您输入内容并按Enter键。这就是nextInt
方法的作用。在技术方面,此方法会导致阻止。
这是正常的,对吗?当然,计算机需要等待您输入一些内容才能在命令行程序中继续运行。但是因为程序在此之前没有输出任何内容,所以你没有意识到程序已在运行。
只需在控制台中输入内容并按回车即可,程序将继续并显示正确的输出!