我知道这不是什么大问题,但我讨厌我的程序在做什么。 这是一个简单的程序,我写了一个程序,询问用户一个整数,然后打印出所有的因素。例如,当用户输入150时,程序应该打印2,3,5,5。
这是我的程序(可行)
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时程序结束并且它的结束在同一行。这是一张图片,因为我无法描述:
我尝试了一些东西,但是在编程方面我是新手,我没有太多选择。谢谢你的帮助!
答案 0 :(得分:6)
在主要方法结束时,只需添加
System.out.println();
所以它以新的一行结束
答案 1 :(得分:0)
每当您需要移动到下一行时,只需使用System.out.println();
您只需在程序结束时使用它。
答案 2 :(得分: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()
,但无论输入的数字是什么,它都会发生。
答案 3 :(得分:0)
你的问题是声明
System.out.println();
未执行,因为当您有一个号码时
while (number > 1) == false
如果将语句移动到方法底部的while循环之外,它将正常工作。
还要考虑如何重构代码,因为我看不到块
if (number == 1) {
System.out.println(number);
System.out.println();
}
由于我上面描述的问题,它会被执行。 (数字> 1)
标记