简单的java问题

简单的java问题,java,Java,我知道这没什么大不了的,但我讨厌我的程序在做什么。 这是一个简单的程序,我编写了一个程序,要求用户输入一个整数,然后打印出它的所有因子。例如,当用户输入150时,程序应打印2、3、5、5 这是我的程序(它有效) 让我发疯的愚蠢问题是成绩单的最后一行。当它打印2、3、5、5时,程序结束,其结束在同一行上。这是一张图片,因为我无法描述事物: 我尝试了一些东西,但作为编程新手,我没有太多的选择可以尝试。谢谢你的帮助 在主方法的末尾添加 System.out.println(); 因此,它在主方法末

我知道这没什么大不了的,但我讨厌我的程序在做什么。 这是一个简单的程序,我编写了一个程序,要求用户输入一个整数,然后打印出它的所有因子。例如,当用户输入150时,程序应打印2、3、5、5

这是我的程序(它有效)

让我发疯的愚蠢问题是成绩单的最后一行。当它打印2、3、5、5时,程序结束,其结束在同一行上。这是一张图片,因为我无法描述事物:


我尝试了一些东西,但作为编程新手,我没有太多的选择可以尝试。谢谢你的帮助

在主方法的末尾添加

System.out.println();

因此,它在主方法末尾的新行

上结束,只需添加

System.out.println();

因此,每当需要移动到下一行时,只要使用
System.out.println()
您只需要在程序结束时使用它。

当您需要移动到下一行时,只需使用
System.out.println()您只需要在程序结束时使用它。

通过一些更好的缩进,您的代码如下所示:

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()
发生在循环打印出所有因子之后,但不管输入的数字是什么,最终的
println()都会发生。

通过一些更好的缩进,您的代码如下所示:

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()
发生在循环打印出所有因子之后,但不管输入数字是什么,最终的
println()都会发生。

您的问题在于

System.out.println();
不会执行,因为当您还有一个号码时

while (number > 1) == false
如果将语句移到方法底部的while循环之外,它将正常工作

另外,考虑一下如何重构代码,因为我看不到代码块

if (number == 1) {
  System.out.println(number);
  System.out.println();
}
会因为我上面描述的问题而被执行。(当数字>1时)


标记

您的问题在于

System.out.println();
不会执行,因为当您还有一个号码时

while (number > 1) == false
如果将语句移到方法底部的while循环之外,它将正常工作

另外,考虑一下如何重构代码,因为我看不到代码块

if (number == 1) {
  System.out.println(number);
  System.out.println();
}
会因为我上面描述的问题而被执行。(当数字>1时)


马克

哇,这对我来说太糟糕了,太感谢了,我试着把它放在所有地方,但主要方法是什么,哈哈,这对我来说太糟糕了,太感谢了,我试着把它放在所有地方,但主要方法是什么,哈哈