最近在学习java的过程中做到了一些有关java程序答应图形的题目,感觉做起来很有意思,当然也挺有难度,所以我来这里想向大家征集有关的题目和解法,希望大家各抒己见,多多发言!谢谢!

解决方案 »

  1.   

    是用“*”呢,还是使用 Graphic 画图?
      

  2.   

    public static void main(String[] args) {  int LINE = 11; // 菱形的行数
      
      // 因为菱形的行数不能是偶数,要转为奇数
      LINE = (LINE & 1) == 0 ? LINE + 1 : LINE;  PrintStream out = System.out;  // 方法一:使用 JDK 1.5 的格式化输出
      out.printf("%" + (LINE + 1) / 2 + "s%n", "*");
      for (int i = 0 - (LINE - 2) / 2; i <= (LINE - 2) / 2; i++) {
        out.printf("%1$" + (Math.abs(i) + 1) + "s%1$" + 2 * (LINE / 2 - Math.abs(i)) + "s%n", "*");
      }
      out.printf("%" + (LINE + 1) / 2 + "s%n", "*");  // 方法二:代码最少
      for (int i = 0 - LINE / 2; i <= LINE / 2; i++) {
        for (int j = 0 - LINE / 2; j <= LINE / 2; j++) {
          // 把 == 改成 <= 或 >= ,还可产生其产的图形
          out.print(((Math.abs(i) + Math.abs(j)) == LINE / 2) ? '*' : ' ');
        }
        out.println();
      }
    }
      

  3.   

    把方法二改进一下,去掉了尾部没有用的空格:// 方法二
    for (int i = 0 - LINE / 2; i <= LINE / 2; i++) {
      for (int j = 0 - LINE / 2; Math.abs(i) + j <= LINE / 2; j++) {
        out.print(((Math.abs(i) + Math.abs(j)) == LINE / 2) ? '*' : ' ');
      }
      out.println();
    }