求java算法大全(打印图形)!!

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

11 个解决方案

#1


晕你也不说个具体的图 叫大家漫无边际的读啊

#2


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

#3


我说的当然是“*”了 呵呵

#4


。。  呃 说到图形 有一个图我到现在都还不会打。

空心五角星。。 谁会教我一下。 只能用循环。

#5


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();
  }
}

#6


把方法二改进一下,去掉了尾部没有用的空格:

// 方法二
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();
}

#7


画空心五角星,有点难度。

我的思路是这样的,正五角星总是在一个圆里面的,五角星一共由五条线段组成,得到这五条线段的解析式,再生成一个方形二维数组,通过线段解析式来填充“*”,不在线段上的一律填充空格。不过我还没实现过,仅是一个思路而已。

#8


呵呵,关注

#9


                 *
              *     *
           *           *
        *  *  *  *  *  *  *


求这个图的 代码方法 思路= =

#10


               *
           *       *
          *         *
         * * * * * * *
是这样的--空心三角形

#1


晕你也不说个具体的图 叫大家漫无边际的读啊

#2


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

#3


我说的当然是“*”了 呵呵

#4


。。  呃 说到图形 有一个图我到现在都还不会打。

空心五角星。。 谁会教我一下。 只能用循环。

#5


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();
  }
}

#6


把方法二改进一下,去掉了尾部没有用的空格:

// 方法二
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();
}

#7


画空心五角星,有点难度。

我的思路是这样的,正五角星总是在一个圆里面的,五角星一共由五条线段组成,得到这五条线段的解析式,再生成一个方形二维数组,通过线段解析式来填充“*”,不在线段上的一律填充空格。不过我还没实现过,仅是一个思路而已。

#8


呵呵,关注

#9


                 *
              *     *
           *           *
        *  *  *  *  *  *  *


求这个图的 代码方法 思路= =

#10


               *
           *       *
          *         *
         * * * * * * *
是这样的--空心三角形