黑马程序员技术交流社区

标题: 请教一个关于输出的问题 [打印本页]

作者: 涂金哲    时间: 2012-6-9 10:53
标题: 请教一个关于输出的问题
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++),程序右侧的*图形是排成一列为什么会这样?
作者: 赵兵锋    时间: 2012-6-9 11:23
  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个字符




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