每行限制输出

时间:2015-10-09 13:56:58

标签: java loops output

我编写的代码可以找到并打印用户指定值之间的每个数字,只要这些数字可以被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;如果声明使输出看起来不像它应该的那样。如果有人知道我错过了什么,我会很感激帮助。

2 个答案:

答案 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个数字后转到下一行。