我正在尝试创建一个除数计数器程序,该程序将输出N的所有值除以一组从1到N(初始)的数字,同时还每当N%intial =时增加一个称为“ divisorcount”的变量。 0。下面是我编写的程序:
public static void main(String[] args) {
int divcount;
int initial;
int divisorcount;
Scanner userinpt = new Scanner(System.in);
int N = userinpt.nextInt();
for (initial = 1; initial < N; initial++) {
divisorcount = 0;
System.out.print(N / initial);
if (N % initial == 0) {
divisorcount++;
System.out.println(divisorcount);
}
}
}
当我在程序中输入数字20时,得到以下结果:
(20 //this is the input the following are outputs)
201
101
651
41
322221
111111111
Process finished with exit code 0
这与我想要或期望的输出并不相符,我不知道为什么得到这个结果。我尝试将变量更改为long,float和double等不同类型,以查看是否有帮助,但是我的代码仍然得到古怪的输出。我究竟做错了什么?特别是为什么我编写的代码会产生这些值。
答案 0 :(得分:0)
我假设您的代码是Java。
请注意,System.out.print
不会打印换行符。
因此,当initial = 1时,System.out.print(N/initial);
将显示“ 20”。
然后,由于20%1 == 0,它将在同一行上打印除数(“ 1”)。现在的输出为“ 20” +“ 1”或“ 201”。
但是,由于您在此处使用println
,因此会添加一个换行符。
System.out.println(divisorcount);
下一次迭代将打印“ 10”,然后在下一行打印“ 1”。
对于第三次迭代,它将首先打印“ 6”。由于20%3!= 0,它将跳过if
块并转到下一个迭代(初始= 4)。然后它将打印“ 5”,然后输入if语句并用换行符打印“ 1”。
另外,正如所写的那样,divisorcount永远不会超过1,因为它将在每次迭代中重置。不知道这是否是故意的。
divisorcount=0;
System.out.print(N/initial);
if(N%initial==0){
divisorcount++;
System.out.println(divisorcount);
}