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