我编写的代码可以找到并打印用户指定值之间的每个数字,只要这些数字可以被5和6整除,但不能两者都可以。代码的要求之一是每行只有10个输出,而那部分我遇到了以下问题:
import java.util.Scanner;
public class DivisibleBy5And6
{
public static void main (String [] args)
{
Scanner scan = new Scanner (System.in);
final int PER_LINE = 10;
int value = 0;
int count = 0;
int max = 0;
String end = ";
do
{
System.out.print ("\nEnter a minimum number: ");
value = scan.nextInt();
System.out.print ("Enter a maximum number: ");
max = scan.nextInt();
System.out.print ("\n");
while (value <= max)
{
if ((value % 5) < 1 ^ (value % 6) < 1)
System.out.print (value + " ");
value++;
count++;
if (count % PER_LINE == 0)
System.out.println();
}
max = 0;
count = 0;
System.out.print ("\n");
System.out.print ("\nContinue? <y/n> ");
end = scan.next();
}while (!end.equalsIgnoreCase("n"));
}
}
我对如何限制输出的例子感到不安,而且我已经看到了&#39;计数&#39;如果声明工作,我知道它为什么有效,但有关计算的价值&#39;如果声明使输出看起来不像它应该的那样。如果有人知道我错过了什么,我会很感激帮助。
答案 0 :(得分:0)
计算每行的数字必须与打印一起进行,而不是每个被调查的数字。
while (value <= max)
{
if ((value % 5) < 1 ^ (value % 6) < 1){
System.out.print (value + " ");
count++;
if (count % PER_LINE == 0)
System.out.println();
}
value++;
}
答案 1 :(得分:0)
实际打印时,您应该只更新count
。将您的if
语句更改为以下内容:
while (value <= max)
{
if ((value % 5) < 1 ^ (value % 6) < 1){
System.out.print (value + " ");
count++; //update since we printed something
if (count % PER_LINE == 0) //check if we have printed 10 items
System.out.println();
}
value++;
}
此外,您还应移动System.out.println()
中的if
,以便在打印10个数字后转到下一行。