• 締切済み

*を表示させるプログラムを

//putChars()メソッドを呼ばず(使わず) for文のネストで、できますか import java.util.Scanner; class IsoscelesTriangleRB { //--- 文字cをn個連続表示 ---// static void putChars(char c, int n) { while (n-- > 0) System.out.print(c); } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("右下直角の三角形を表示します。"); System.out.print("段数は:"); int n = stdIn.nextInt(); for (int i = 1; i <= n; i++) { putChars(' ', n - i); // ' 'をn - i個表示 putChars('+', i); // '+'を i 個表示 System.out.println(); } } }

みんなの回答

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>//putChars()メソッドを呼ばず(使わず) >for文のネストで、できますか 単に「 putChars(' ', n - i); // ' 'をn - i個表示」等と書いてる所に putChars() の中身を展開すればいいけど、意味はないよね。

yuuitirou
質問者

お礼

ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • auty
  • ベストアンサー率58% (284/486)
回答No.1

単に短く書くなら、新たにJavaでも使えるようになった、printfを使ってみましょう。 例えば、 System.out.printf("%5s\n","+++++"); の様に記述しますが、数字5の部分を変化させる必要があります。変数にすれば良いですね。 以下のコードを参考にしてみてください。 ------------------------------------------------------------ import java.util.Scanner; class IsoscelesTriangleRB2 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("右下直角の三角形を表示します。"); System.out.print("段数は:"); int n = stdIn.nextInt(); String ss="+"; for (int i = 1; i <= n; i++) { System.out.printf("%"+n+"s\n",ss); ss += "+"; } } }

yuuitirou
質問者

お礼

参考になりました ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javaのプログラム

    int型の配列の各要素に1~10の乱数を代入し、各要素の値を縦向きの*のグラフで表示するプログラムを作っているのですが、結果がランダムででるので、自分の書いたプログラムが正しいのかわかりません。ソースを載せますので合っているのか間違っているか教えて下さい。もし間違っているならどこが間違いなのか教えていただけると嬉しいです。よろしくお願いします。 ●ソース import java.util.Random; import java.util.Scanner; class Graph { public static void main(String[] args){ Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数:"); int n = stdIn.nextInt(); int a[] = new int[n]; for (int i = 0; i < n; i++) a[i] = 1 + rand.nextInt(10); for (int i = 1; i <= 10; i++){ for (int j = 0; j < n; j++) if (a[j] <= i) System.out.print("* "); else System.out.print(" "); System.out.println(); } } } ●実行例 要素数:12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    • ベストアンサー
    • Java
  • JAVAで配列を使って * を縦向きのグラフで表示したいです。

    JAVAの勉強をしています。 このプログラムは配列に乱数を生成して * を 横向きにするプログラムです。 練習問題で、以下のプログラムを書き換えて、* を縦向きのグラフで表示する問題なのですが、解く方法がわかりません。 どなたか答えもしくはヒントを下さい。 よろしくお願いします。 import java.util.Random; import java.util.Scanner; public class Test06_04 { public static void main (String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); System.out.print("要素数 : "); int n = stdIn.nextInt(); //要素数を読み込む int[] a = new int[n]; //配列を生成 for (int i = 0; i < n; i++) { a[i] = 1+ rand.nextInt(10); } for (int i = 0; i < n; i++) { System.out.print("a[" + i + "] : "); for (int j = 0; j < a[i]; j++) System.out.print('*'); System.out.println(); } } }

    • ベストアンサー
    • Java
  • フローチャートについて

    import java.util.Scanner; class Test{ public static void main(String[] args){ Scanner stdIn = new Scanner(System.in); System.out.println("1からnまでの和を求めます。"); System.out.print("nの値:"); int n= stdIn.nextInt(); int sum=0; int i=1; while(i<=n){ sum +=i; i++; } System.out.println("1から"+n+"までの和は"+sum+"です。"); } } 1からnまでの和を求めるプログラムで、この画像はそのフローチャートなのですが、 参考書にはsum+i→iと書かれています。 これってsum+i→sumの間違いですか? また、初期化や代入のフローチャートは 代入したい値を左に書いて右矢印にして右に変数を書くのが一般的なのでしょうか?

    • ベストアンサー
    • Java
  • JAVAの演習問題

    現在JAVAを独学中なのですが、以下の演習問題でつまずいております。 (解答がない演習問題なので、このサイトにて質問することにしました。) 実行例 1からnまでの和を求めます。 nの値:5 1から5までの和は15です。 (5はキーボードにて入力された値。15はその結果の値。) 自分の解答は以下になるのですが、実行例のようになりません。 ご解答頂けると大変助かります。 import java.util.Scanner; class Ensyuu413 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("1からnまでの和を求めます。"); System.out.print("nの値:"); int n = stdIn.nextInt(); for ( int i = 0, j = 0; i <= n; i++, j += i) System.out.println("1から"+n+"までの和は"+j+"です。"); } }

  • プログラムの違いを教えて下さい・・・

    public class Gold1 { static int prime(int number){ int count=0; for(int i=2; i<number; i+=2){ if(number%i==0) count++; } return count; } public static void main(String[] args) { long start = System.currentTimeMillis(); int n, p; //System.out.println("4=2+2"); for(n=6; n<=100000; n+=2){ for(p=2; p<n; p++){ if(prime(p)==2 && prime(n-p)==2){ //System.out.println(n + "=" + p + "+" + (n-p)); break; } } if(p==n){ //System.out.println("この予想は間違いと判明!"); break; } if(n%1000==0){ long stop = System.currentTimeMillis(); System.out.println(n + " " + (stop-start)); } } } } ---------------------------------------------------------------- この上のプログラムの一部を ---------------------------------------------------------------- if(prime(p)==0 && prime(n-p)==0){ //System.out.println(n + "=" + p + "+" + (n-p)); break; } ---------------------------------------------------------------- というふうに変えたらどういう意味があるのですか??

    • ベストアンサー
    • Java
  • また自分で組んでわからなくなって聞いて欲しいのです

    明快Java入門演習問題4-22のピラミッド作成がわけわかんなくって色々やっていたら今はこうなりました 今後の理解のためまた恥を忍んでご質問します。 ご説明のほどをお願いします。 import java.util.Scanner; public class Ensyuu422 { static int n=0; static Scanner sc; /** * @param args */ public static void main(String[] args) { sc=new Scanner(System.in); System.out.println("ピラミッドを作成します"); System.out.print("何段ですか?"); n=sc.nextInt(); for(int i=1; i<=n; i++){ for(int j=1; j<n-i+1; j++){ System.out.print("*"); } } } } 何がわからないかというと何で*が10個も表示されるかについてです。 j<n-iということはjは1nは例えば入力値が5だとすると1<5-iに1を足して状態になりますよね? ここまではわかっているんですがならば何故10個も*が表示されるのがわからないです。 出来たらやんわりとお願いします。

    • ベストアンサー
    • Java
  • 要素数が10の配列で、乱数0~9の値が重複しないようにする方法がわからなくて困っています。

    JAVAの練習問題でわからなくて困っています 以下は線形探索のプログラムで、このプログラムを改良して、 要素数が10の配列で、乱数0~9の値が重複しないようにする方法がわからなくて困っています。 以下のような簡単なプログラムでできる方法で行いたいです。 どなたか答えまたはヒントを下さい、お願いします。 ------------------------------------------------------------ import java.util.Random; import java.util.Scanner; public static void main (String[] args) { Random rand = new Random(); Scanner stdIn = new Scanner(System.in); final int n = 10; //要素数 int[] a = new int[n]; //配列を宣言 for (int j = 0; j < n;) a[j] = rand.nextInt(10); System.out.print("配列aの全要素の値\n{ "); for (int j = 0; j < n; j++) System.out.print(a[j] + " "); System.out.println("}"); System.out.print("探す数値 : "); int key = stdIn.nextInt(); int i; for (i = 0; i < n; i++) if (a[i] == key) break; if (i < n) //探索成功 System.out.println("それはa[" + i + "]にあります。"); else //探索失敗 System.out.println("それはありません。"); } }

  • JAVAの演習問題

    現在JAVAを独学中なのですが、以下の演習問題でつまずいております。 (解答がない演習問題なので、このサイトにて質問することにしました。) 実行例 1からnまでの和を求めます。 nの値:5 1から5までの和は15です。 (5はキーボードにて入力された値。15はその結果の値。) 自分の解答は以下になるのですが、実行例のように表示されません。 ご解答頂けると大変助かります。 import java.util.Scanner; class Ensyuu413 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("1からnまでの和を求めます。"); System.out.print("nの値:"); int n = stdIn.nextInt(); for ( int i = 0, j = 0; i <= n; i++, j += i) System.out.println("1から"+n+"までの和は"+j+"です。"); } } 実行しますと、以下のように実行されてしまいます。 1からnまでの和を求めます。 nの値:5 1から5までの和は0です。 1から5までの和は1です。 1から5までの和は3です。 1から5までの和は6です。 1から5までの和は10です。 1から5までの和は15です。

  • 引数を利用したプログラムの作成です!!教えてください!!

    class Zidou { int Zaiko; int Uriage; int Hoju; void setHoju(int h) { Hoju = h; if(Zaiko<=100) { for(int n=1; Zaiko<=99; n++) { Zaiko = Zaiko-Hoju; } } if(Zaiko>100) { for(int n=1; n<=10; n++) { Zaiko = Zaiko - 1; } } } void setZaiko(int z) { Zaiko = z; for(int n=1; n<=20; n++) { Zaiko = Zaiko-1; } System.out.println("商品を20個買います。"); System.out.println("残在庫数は" + Zaiko + "個です。"); } void setUriage(int u) { Uriage = u; for(int n=1; n<=20; n++) { Uriage = Uriage+100; } System.out.println("売上げ額は" + Uriage + "円です。"); } } class Ex07_2a { public static void main(String args[]) { Zidou zidou1 = new Zidou(); zidou1.setZaiko(100); zidou1.setUriage(0); zidou1.setHoju(30); System.out.println("商品を購入したので商品を補充する。"); System.out.println("残在庫数は" + zidou1.Zaiko + "個です。"); } } と作成してコマンドプロントで実行したんですが、補充してからの在庫数がうまく100個にならないんです。どこが間違っているか、教えていたたげないでしょうか?お願いいたします。

  • javaの問題

    import java.util.Scanner; class test6{ static void printArray(int[] a) { for(int i=0;i<a.length;i++) System.out.print(String.format("%1$6s", (a[i]+" "))); System.out.println(); } static void printArray(int[][] a) { for(int[] i:a) { for(int j:i) System.out.print(String.format("%1$6s",(j+"\t"))); System.out.println(); } } public static void main(String[] args) { int[] a = {12,536,-8,7}; int[][] c = {{32,-1,32,45,67}, {535,99999,2}, {2,5,-123,9}}; printArray(a); printArray(c); } } このプログラムを表示するとこのようになるのですが、 12 536 -8 7 32 -1 32 45 67 535 99999 2 2 5 -123 9 これに一工夫加えて見やすくしたいです。 このような形にするのはどのようにすればよいのでしょうか + + | 32 -1 45 67 | | 535 99999 2 | | 2 5 -123 9 | + +

彼との関係についての疑問
このQ&Aのポイント
  • ライブ配信で知り合った彼との関係について、私の気持ちと彼の気持ちの違いや不安があります。
  • 彼は私と遊ぶだけなのか、本気で付き合ってくれるのかわからず、連絡の頻度も減ってきました。
  • 彼の配信中に私の存在を意識して言及されたことがあり、何か特別な意味があるのか気になります。
回答を見る

専門家に質問してみよう