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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 涂金哲 中级黑马   /  2012-6-9 10:53  /  1209 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.math.*;
public class MathTest {  public static void main(String[] args) {
   double y;
   int m;
  for(y=1;y>=-1;y-=0.1){  
  m=  (int) (Math.acos(y)*10);     System.out.println(m);
   for(int x=1;x<m-1;x++)
      System.out.print(" ");  
  System.out.print("*");
   for(int z=0;z<31-m;z++)  //如果将循环条件改为(int z=0;z<62-m;z++) 输出改为一个空格??     System.out.print("  ");//此处有两个空格    System.out.println("*");
 }
}
}
问题:如果for(int z=0;z<31-m;z++)改为注释的内容 (int z=0;z<62-m;z++),程序右侧的*图形是排成一列为什么会这样?

1 个回复

倒序浏览
  1.                 for (y = 1; y >= -1; y -= 0.1) {
  2.                         m = (int) (Math.acos(y) * 10);
  3.                         System.out.println(m);
  4.                         for (int x = 1; x < m - 1; x++)
  5.                                 System.out.print(" ");//这里循环次数为m-2次
  6.                         System.out.print("*");
  7.                         for (int z = 0; z < 62 - m; z++)
  8.                                 System.out.print(" ");//这里循环次数为62-m次
  9.                         System.out.println("*");
  10.                 }
复制代码
第二处for里改为1个空格时:每行的输出:(m-2)个空格+*+(62-m)个空格+*,在行尾的*之前会有m-2+62-m=60个空格,其中加上一个星号,,所以行尾的星号竖着看是一列,它们都是本行的第62个字符
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马