2016-03-07 171 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方法所做的。從技術角度而言,此方法會導致阻止

這很正常,對嗎?當然,計算機在命令行程序開始之前需要等待輸入。但是,因爲該程序在此之前沒有輸出任何內容,所以您不知道該程序已在運行。

如何解決這個問題

在控制檯,然後按回車剛進入的東西,該計劃將繼續,並顯示正確的輸出!

相關問題