2013-10-09 209 views
1

我知道這不是什麼大不了的事,但我討厭我的程序在做什麼。 這裏是簡單的程序我haWrite程序,要求用戶輸入一個整數,然後打印出所有的因素。例如,當用戶輸入150時,程序應該打印2,3,5,5。簡單的Java麻煩

這是我的程序(它的工作原理)

import java.util.Scanner; 

public class FirstProgram { 
    public static void main(String[] args) { 

     Scanner scan = new Scanner(System.in); 
     int number; 
     int divisor = 2; 

     System.out.println("Enter the number: "); 
     number = scan.nextInt(); 
     while (number > 1) { 
      if ((number % (number/divisor)) == 0 && number > 0) { 
       number = number/divisor; 
       System.out.print(divisor); 
       if (number != 1) 
        System.out.print(", "); 
      } 
      else if ((number % (number/divisor)) != 0 && number > 1) { 
       divisor++; 
       if (number == 1) { 
        System.out.println(number); 
        System.out.println(); 
       } 
      } 
     } 
    } 
} 

被駕駛我堅果的笨問題是成績單中的最後一行。當它打印2,3,5,5時,程序結束,其結束在同一行上。這裏是一個圖片,因爲我無法用語言形容的東西:

enter image description here

我嘗試了一些東西,但處於編程新我並沒有太多的選擇去嘗試。謝謝您的幫助!

回答

6

在你的主要方法的最後只需添加

System.out.println(); 

因此,它結束在新行

+0

哇,這是我的一部分壞了,謝謝你這麼多,我試圖把到處都有,但主要的方法哈哈 – Morgan

0

每當你需要移動到下一行,只需使用System.out.println();你只需要,在程序結束。

0

有了一些更好的縮進,你的代碼看起來是這樣的:

Scanner scan = new Scanner(System.in); 
int number; 
int divisor = 2; 

System.out.println("Enter the number: "); 
number = scan.nextInt(); 
while (number > 1) 
{ 
    if ((number % (number/divisor)) == 0 && number > 0) 
    { 
     number = number/divisor; 
     System.out.print(divisor); 
     if (number != 1) 
     System.out.print(", "); 
    } 
    else if ((number % (number/divisor)) != 0 && number > 1) 
    { 
     divisor++; 

     if (number == 1) 
     { 
      System.out.println(number); 
      System.out.println(); 
     } 
    } 
} 

您遇到的問題是,對於一些數字,永遠達不到你的循環else if ...部分。重組這樣的循環體,我認爲它會做你想要什麼:

while (number > 1) 
{ 
    if ((number % (number/divisor)) == 0 && number > 0) 
    { 
     number = number/divisor; 
     System.out.print(divisor); 
     if (number != 1) 
     System.out.print(", "); 
    } 
    else if ((number % (number/divisor)) != 0 && number > 1) 
    { 
     divisor++; 

     if (number == 1) 
     { 
      System.out.println(number); 
     } 
    } 
} 

System.out.println(); 

注意,最終println()循環打印出所有的因素之後發生,但不管會發生什麼輸入數量是。

0

你的問題是,聲明

System.out.println(); 

如果在方法的底部移動,同時外循環語句是不是因爲在執行時你一個號碼留給

while (number > 1) == false 

它會正常工作。

也有想想你如何重構代碼,因爲我看不到

由於問題我上述
if (number == 1) { 
    System.out.println(number); 
    System.out.println(); 
} 

將永遠是執行的塊。 (當數> 1)

馬克