配列コードでは出来るのですが、そのほかのコードもみたいです。
**********
*********
********
*******
******
*****
****
***
**
*
素晴らしいコードには高ポイントさしあげます
汎用性よりも必要に応じてリファクタリングすれば良いというポリシーでシンプルに書くことを心がけました。
こんな感じでしょうか。
System.out.println("**********\n*********\n********\n*******\n******\n*****\n****\n***\n**\n*");
こんな感じですか?
public class Asterisk { public static void main(String[] args) { for(int i = 0; i < 10; i++){ StringBuilder result = new StringBuilder(); for (int j = 0; j < 10 - i;j++){ result.append("*"); } System.out.println(result); } } }
StringBuilderははじめてみましたね。ありがとうございます。
最初に確認しておきたいことがあります。
もしかして宿題の丸投げではないでしょうか?
これはどのプログラミングの教科書にも出てくる典型問題といわれるものです。
この問題が出てきた単元はプログラミングを習得する過程で必ずマスターすべきところです。そのようなところはあまり多くはないので、本人が本なりネットなりとにらめっこして頑張ってみてはいかがでしょうか。思ったほど難しくはないのですよ。
もし違ったらごめんなさい。回答は他の方がすでに答えているだろうと思いますので割愛させていただきます。
そういう答えは欄外に書いてください。他の人に失礼です。ひとつの答えは出ましたが10人10様色々なソースがあるはずです。それがみたいのです。
public class Star { private static String star = "**********"; public static void main(String[] args) { for (int i = 0; i < star.length(); i++) { System.out.println(star.substring(i)); } } }
こんな感じでどうでしょう。
スピードはまあ配列使った方が速いでしょうね。
ありがとうございます。
再帰で書く方法もありますね。
public class Asterisk { public static void printAsterisk(String asterisk) { System.out.println(asterisk); if (asterisk.length() > 1) { printAsterisk(asterisk.substring(1)); } } public static void main(String[] args) { printAsterisk("**********"); } }
再帰という方法があったのですか。ありがとうございます。
public class hoge { public static void main(String[] args) { for( int i=66; i>0; i-- ) System.out.print( Math.IEEEremainder( Math.sqrt( 8*i + 1 ), 1 ) == 0.0 ? '\n': '*' ); } }
他の人と違うのを。
半可通の浮動小数点厨には叩かれそうですが、java.lang.Math を見ると、正しく動くのは保証されるように思います。
これも初めてみました。ありがとうございます。
おお、すごい!こんなシンプルな描き方があるとは。