采用输入的Java代码需要很长时间才能执行

时间:2016-03-07 03:53:19

标签: java

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)。

3 个答案:

答案 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方法的作用。在技​​术方面,此方法会导致阻止

这是正常的,对吗?当然,计算机需要等待您输入一些内容才能在命令行程序中继续运行。但是因为程序在此之前没有输出任何内容,所以你没有意识到程序已在运行。

如何解决此问题

只需在控制台中输入内容并按回车即可,程序将继续并显示正确的输出!