2013-10-09 141 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)

马克