黑马程序员技术交流社区

标题: 语句的执行顺序与运行结果问题 [打印本页]

作者: 宋耀冬    时间: 2013-3-25 20:14
标题: 语句的执行顺序与运行结果问题
本帖最后由 宋耀冬 于 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 就换了 ,这是怎么回事
作者: 胡国彬    时间: 2013-3-25 20:33
本帖最后由 胡国彬 于 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),这两种方式都可以成功。
作者: 曹玉龙    时间: 2013-3-25 21:41
执行顺序问题,改一下就可以了.
  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. }
复制代码

作者: 徐鸿燕    时间: 2013-3-25 21:42
  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. }
复制代码

作者: 薛飞    时间: 2013-3-26 00:19
  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. }
复制代码

作者: 夏凡    时间: 2013-3-26 09:25
你的这个问题出在“判断语句放在输出语句之前了”,也就是到第十个数的时候还没来的及输出已经满足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. }
复制代码

作者: 陆旭东    时间: 2013-3-26 18:57
因为当i=10的时候i%10等于0,按照你程序的逻辑就会打印换行,然后继续打印i




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2