2016-03-07 174 views
-1
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)。输入Java代码需要很长时间才能执行

+1

你想要测试什么输入数字? – shmosel

+0

这是你提到的情况,当你尝试大量? – SmashCode

+0

在扫描仪运行时间开始之前使用打印语句在您输入数字之前,如果您输入一个值时需要时间延迟,它会被添加到运行时间太清楚地说空闲时间也被计为运行时间,一旦程序运行。希望您找到我的答案很有用。 – SmashCode

回答

0

这将永远不会完成执行,直到你按Ctrl + d,因为输入这里是System.in,这在技术上没有“乱用”的结束:

new Scanner(System.in); 
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 
0

我觉得你刚才说我用了一个错误总是做出。当我在Eclipse或其他任何地方运行我的命令行程序时,没有任何内容正在打印。我想,为什么F ** K你没跑,男人?我尝试点击“运行”按钮几次,但我仍然得到相同的结果。

然后我打开了调试,并通过整个事情阶梯,并认为它停止在这条线:

int x = input.nextInt(); 

在那之后,我意识到多么愚蠢我也是控制台正在等待我的输入!

那么究竟发生了什么呢?当程序运行到上面的行时,它停止。它会等待您输入内容并按Enter键。这就是nextInt方法所做的。从技术角度而言,此方法会导致阻止

这很正常,对吗?当然,计算机在命令行程序开始之前需要等待输入。但是,因为该程序在此之前没有输出任何内容,所以您不知道该程序已在运行。

如何解决这个问题

在控制台,然后按回车刚进入的东西,该计划将继续,并显示正确的输出!

相关问题