【问题标题】:limit outputs per line每行限制输出
【发布时间】:2015-10-09 13:56:58
【问题描述】:

我正在编写一个代码,它可以查找并打印用户指定值之间的每个数字,只要这些数字可以被 5 和 6 整除,但不能同时被 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"));


  } 
}

我弄乱了我给出的关于如何限制输出的示例,我已经看到“count”if 语句有效并且我知道它为什么有效,但是关于“value”if 中的计算的一些内容声明使输出看起来不像它应该的那样。如果有人知道我错过了什么,我将不胜感激。

【问题讨论】:

  • 创建一个大小为 10 的数组。填充它。打印它。重复。
  • 附加提示:将计数器设置为零应该尽可能靠近使用它的位置和之前,而不是前后不远。

标签: java loops output


【解决方案1】:

计算每行的数字必须与打印一起完成,而不是与每个调查的数字一起完成。

 while (value <= max)
    {     
       if ((value % 5) < 1 ^ (value % 6) < 1){
          System.out.print (value + " ");
          count++;
          if (count % PER_LINE == 0)
              System.out.println();     
       }
       value++;
    }

【讨论】:

  • 哇,回想起来很明显。现在正在运行,感谢您的帮助!
【解决方案2】:

您应该只在实际打印某些内容时更新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 个数字后才转到下一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2021-09-21
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多