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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋耀冬 中级黑马   /  2013-3-25 20:14  /  1931 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋耀冬 于 2013-3-26 19:13 编辑

public class Print {
    public static void main(String[] args) {
        int i = 1;
        while (i < 128) {
            if (i % 10 == 0) {
                System.out.println();
            }           
            System.out.print(i + "\t");
            i ++;
            
            
        }
    }
}

我想让代码没打印到10 换行  ,可总到 9 就换了 ,这是怎么回事

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 胡国彬 于 2013-3-25 20:35 编辑

你的代码有问题,很明显,当i=10的时候,首先进入system.out.println();而这句话是换行,接着才走system.out.print(i+“\t”),也就是打印出十。
你想要先打印到10在换行,可以把 System.out.print(i + "\t");这句话放到if语句的前面,或者也可以把if语句的条件改为if ((i-1) % 10 == 0),这两种方式都可以成功。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
执行顺序问题,改一下就可以了.
  1. class Demo {
  2.     public static void main(String[] args) {
  3.         int i = 1;
  4.         while (i < 128) {
  5.                         //被移动的代码行
  6.                          System.out.print(i + "\t");
  7.             if (i % 10 == 0) {
  8.                 System.out.println();
  9.             }                     
  10.             i ++;
  11.                         
  12.         }
  13.     }
  14. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
  1. public class Print {
  2.         public static void main(String[] args) {
  3.                 int i = 1;
  4.                 while(i < 128){
  5.                         if (i % 10 != 0)//如果i不是10的倍数
  6.                                 System.out.print(i + "\t");
  7.                         else//如果是10的倍数。
  8.                                 System.out.println(i);
  9.                         i++;//i自增1。
  10.                 }
  11.         }
  12. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
  1. class HuanHang
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int i = 1;
  6.                 while (i < 128)
  7.                         {
  8.                                 System.out.print(i + "\t");
  9.                                 if (i % 10 == 0)
  10.                                                 System.out.println();
  11.                                 i++;
  12.                         }
  13.                 System.out.println();//循环打印结束后换行。
  14.         }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
你的这个问题出在“判断语句放在输出语句之前了”,也就是到第十个数的时候还没来的及输出已经满足if的条件而执行换行了
正确的代码如下:
  1. public class Print {
  2.     public static void main(String[] args)
  3. {
  4.         int i = 1;
  5.         while (i < 128)
  6.         {
  7.             System.out.print(i + "\t");
  8.             if (i % 10 == 0)
  9.             {
  10.                 System.out.println();
  11.             }           
  12.             i ++;   
  13.         }
  14.     }
  15. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
因为当i=10的时候i%10等于0,按照你程序的逻辑就会打印换行,然后继续打印i

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马