A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 run_wind 于 2014-10-19 23:10 编辑

  1. 需求:输入1~1000的整数5的倍数,并打印,3个换一行
  2. 思路:for循环,3个换一行,用循环嵌套的方式
  3. */
  4. class  Test
  5. {
  6.           public static void main(String[] args)
  7.           {
  8.                  for (int i=0;i<1000 ;i++ )
  9.                   {
  10.                        for (int r=0;r<3 ;r++ )
  11.                           {
  12.                                 if (i%5==0)
  13.                                System.out.print(i+"\t");
  14.                           }
  15.                       System.out.println();
  16.                   }
  17.             }
  18. }
复制代码
知道了问题,但是不知道如何改进?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

20 个回复

倒序浏览
  1. package com.itheima;

  2. public class Test {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 int count=0;
  9.                 for(int x=0;x<1000;x++){
  10.                         if(x%5==0){
  11.                                 System.out.println(x+",");
  12.                                 count++;
  13.                                 if(count%3==0){
  14.                                         System.out.println("\t");
  15.                                 }
  16.                         }
  17.                 }
  18.         }

  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 int count = 0;
  3.                 for(int i = 1;i<=1000;i++){
  4.                         if(i%5==0){
  5.                                 System.out.print(i+"\t");
  6.                                 count++;
  7.                                 if(count%3==0){
  8.                                         System.out.println();
  9.                                 }
  10.                         }
  11.                 }

  12.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
class Test {
        public static void main(String[] args) {
                int sum = 0;
                for (int i = 0; i < 1000; i++) {

                        if (i % 5 == 0) {
                                System.out.print(i + "\t");
                                sum++;
                        }

                        if (sum % 3 == 0) {

                                System.out.println();
                        }
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
你后面的是一个判断,而不是一个循环,所以应该用if,而不是用for,看我改写的,加个计数器就搞定了!
回复 使用道具 举报

哥们你写得计数器不对,要括在for循环里面,不然后面的判断语句也会跟着出错。
看我的就不会出错,括在for循环里面就可以了!
回复 使用道具 举报
class  lianxi
{
        public static void main(String[] args)
        {
                int count = 0;
                for (int x=0; x<=1000;x++ )
                {
                        if(x%5==0)
                        {
                                System.out.print(x+"\t");
                                count++;
                                if (count%3==0)
                                {
                                        System.out.println("");
                                }
                        }
                       
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
mudao 中级黑马 2014-10-19 23:30:43
8#
他们都写对了,是不能用内循环的,内循环的效果是外循环循环一次,内循环循环三次,怎么想怎么不符合要求。用判断语句,然后用个变量控制换行个数就行了。
回复 使用道具 举报
  1. class Text
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //定义计数器
  6.                 int count=0;
  7.                 //对1-1000进行遍历
  8.                 for(int x=1;x<1000;x++)
  9.                 {
  10.                         //判断条件能被5整除写入
  11.                         if(x%5==0)
  12.                         {
  13.                                 System.out.print(x+"\t");
  14.                                 count++;
  15.                                 //当count被3整除时换行
  16.                                 if(count%3==0)
  17.                                         System.out.println();
  18.                         }
  19.                 }
  20.         }
  21. }
复制代码
楼上你写错了,正确如下

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
上面两个没有括起来,运行不对,计数器记得括在for循环里面!
回复 使用道具 举报
你的换行在外循环中,每一次外循环都会换一次行,不管能不能整除5。其实计数器的使用方法有几种,上面既然用了一种,我就用另一种的
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int count = 0;
  6.                 for (int i=1;i<=1000 ;i++ )
  7.                 {
  8.                         if (i%5==0)
  9.                         {
  10.                                 System.out.print(i+"\t");
  11.                                 count++;
  12.                         }
  13.                         if(count==3)
  14.                         {
  15.                                 System.out.println();
  16.                                 count=0;
  17.                         }
  18.                 }
  19.         }
  20. }
复制代码
回复 使用道具 举报
  1. public class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for (int x = 1, count = 0; x <= 1000; x++)
  6.                 {
  7.                         if (5 * x >= 1 && 5 * x <= 1000)
  8.                         {
  9.                                 System.out.print(5 * x + "\t");count++;
  10.                                 if (count % 3 == 0) System.out.println();
  11.                         }
  12.                 }
  13.         }
  14. }
复制代码
回复 使用道具 举报
郑飞 高级黑马 2014-10-20 07:23:26
13#
15的倍数换一次行就好啦
回复 使用道具 举报
本帖最后由 ⋛⋌⋚JEEP 于 2014-10-20 09:50 编辑

这段代码有点意思,相当于跳过了不符合要求,只挑符合要求的。有个地方再改一下就更好了。
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 for (int x = 1, count = 0; x <= 1000; x++) {
  4.                         if (5 * x >= 1 && 5 * x <= 1000) {
  5.                                 System.out.print(5 * x + "\t");count++;
  6.                                 if (count % 3 == 0) System.out.println();
  7.                                 }
  8.                                 else
  9.                                         break;//当x=201时直接结束循环
  10.                                 }
  11.         }
  12. }
复制代码

回复 使用道具 举报
肖建伟 发表于 2014-10-19 23:29
哥们你写得计数器不对,要括在for循环里面,不然后面的判断语句也会跟着出错。
看我的就不会出错,括在fo ...

是在外面的啊,你不也是在外面
回复 使用道具 举报
(づ ̄_3 ̄)づ 发表于 2014-10-20 10:49
是在外面的啊,你不也是在外面

说错了,在if里面,你那样写在for外边,计数器一直记到1000了
回复 使用道具 举报
cxdzh 中级黑马 2014-10-20 12:10:06
17#

思路很有意思,但是细节不够完美,外圈x<=1000,那么x>200之后其他的都是800次循环都是白费..所以外圈循环到x<=200就行了,,x必定是1-200,5*x就必定是5-1000,输出倍数的判断也不需要了,判断计次就行了

public class Test
{
        public static void main(String[] args)
        {
                for (int x = 1, count = 0; x <= 200; x++)
                {
                    System.out.print(5 * x + "\t");
                    count++;
                    if (count % 3 == 0)
                       System.out.println();                     
                }
        }
}
回复 使用道具 举报
  1. class  Test8
  2. {
  3.       public static void main(String[] args)
  4.       {
  5.               int r = 0;
  6.              for (int i=0;i<=1000 ;i++)
  7.               {
  8.                      if(r==3)
  9.                      {
  10.                              System.out.println();
  11.                              r=0;
  12.                      }
  13.                      if (i%5==0)
  14.                      {
  15.                      System.out.print(i+"\t");
  16.                      r++;
  17.                      }
  18.               }
  19.         }
  20. }
复制代码
回复 使用道具 举报
肖建伟 发表于 2014-10-20 11:28
说错了,在if里面,你那样写在for外边,计数器一直记到1000了

还是没明白你到底什么意思,我这个计数的是遇到5的整数才会+1,我都运行过的,没有问题,你是不是看到的是别人的。
还有,题目是1-1000,你写的是0-999;换行的语句嵌套在上一个if里也能减少判断次数
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 for (int i = 1; i <= 1000; i++) {
  3.                         if (i % 5 == 0)
  4.                                 System.out.print(i + "\t");
  5.                         if(i % 15 == 0)
  6.                                 System.out.println();
  7.                 }
  8.         }
复制代码
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马