• 締切済み

JSPのwhile文で1~5の☆でひし形を作りたい

JSPのwhile文でひし形を作りたいのですが 半分しかできません。数値が固定になってしまいます。 どうやったらひし形ができますか?教えてください。 // 上り for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { out.print("*"); } out.print("<BR>"); } // 下り for (int i = 0; i < 5; i++) { for (int j = 4; j >= i; j--) { out.print("*"); } out.print("<BR>"); }

みんなの回答

回答No.3

まだ質問が受け付け中(&補足になっていた)なのでちょっとだけ… > 反転させる方法がわからなかったのですが 知りたいのはどれですか? 1.ひし形を作る方法 2.今のソースを反転させる方法 3.実はそれ以外 1であれば提示したソースでいいですよね? 2であれば極端な話、せっかくJSPですし<div align="right">を使えば同じコードでできますよ? 3であれば提示をお願いします。

mamyuru
質問者

補足

わざわざありがとうございます。 int x; x=Integer.parseInt(id1); for (int i = 0; i < x; i++) { for (int j = x--; j >= i; j--) { out.print("★"); } for (int j = 0; j <= i; j++) { out.print("☆"); } for (int j = 1; j <= i; j++) { out.print("☆"); } for (int j = x++; j >= i; j--) { out.print("★"); } まで修正したのですが一番左の数が1つ多くなってしまいます。 これはループがおかしいのでしょうか?

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

間違えてSystem.out.printにしちゃいました(汗) out.printに置き換えてください(T_T)

mamyuru
質問者

補足

ありがとうございました。 for (int i = 0; i < 5; i++) { for (int j = 0; j <= i; j++) { out.print("*"); } out.print("<BR>"); } // 下り for (int i = 0; i < 5; i++) { for (int j = 4; j >= i; j--) { out.print("*"); } out.print("<BR>"); } を反転させる方法がわからなかったのですが 使わせていただきます

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

こういう感じですか? (半角スペースが怪しいですか…) final int count = 5; int asteriskCount = 1; int spaceCount = 0; for (int i = 1; i <= count; i++) { spaceCount = count - i; for(int j = 0; j < spaceCount; j++) { System.out.print("&nbsp;"); } for(int j = 0; j < asteriskCount; j++) { System.out.print("*"); } System.out.print("<BR>"); asteriskCount += 2; } asteriskCount -= 2; // 下り for (int i = count - 1; i >= 1; i--) { asteriskCount -= 2; spaceCount = count - i; for(int j = 0; j < spaceCount; j++) { System.out.print("&nbsp;"); } for(int j = 0; j < asteriskCount; j++) { System.out.print("*"); } System.out.print("<BR>"); } countの値を変えれば大きくも小さくもできます。 …多分(汗) ところで、whileはドコで使うんでしょう??

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

関連するQ&A

  • java while文です。教えてください(__)

    public class mondai2{ //プログラム開始 public static void main(String args[]){ BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int i; int ans=0; int seikai=0; for(i=0;i<5;i++){ try{ { Random ran = new Random(); int num1 = ran.nextInt(8)+1; int num2 = ran.nextInt(8)+1; ans = num1*num2; System.out.print("問題"+(i+1)+":"); System.out.print(num1 + "×" +num2 + "="); String s =in.readLine(); seikai = Integer.parseInt(s); if(seikai==ans){ System.out.println("正解"); }else{ System.out.println("不正解"); } } }catch(IOException e){ System.out.println("エラー"); } } } } このプログラムをwhile文か、do while文にして正解が出るまで問題が出続けるようにしたいんですけど、まったくわからなくて困っています>< 教えてください(+o+)

    • ベストアンサー
    • Java
  • phpのwhileを使った文について

    phpについては初心者です。 <?php $i=0; $j=0; while($i<4){ while($j<4){ echo $i,$j,"<br>"; $j++; } $i++; } ?> この結果が 00 01 02 03 となりますが、 00 01 02 03 10 11 12 13 ... 32 33 のようにしたいです。 何が違うのでしょうか?ぜひとも教えてください。

    • ベストアンサー
    • PHP
  • 【JAVA】数字をひし形に出力するプログラムについ

    JAVAについて質問です。 import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int count = 1, space = 0; for (int i = 1; i < 2 * n; i++) { if (i <= n) { space++; } else { space--; } for (int spc = n - space; spc > 0; spc--) { System.out.print(" "); } for (int j = 0; j < count; j++) { System.out.print(i); } if (i < n) { count = count + 2; } else { count = count - 2; } System.out.println(); } in.close(); } } ↑のプログラムで標準入力に例えば8と入力すると、 _______1↵ ______222↵ _____33333↵ ____4444444↵ ___555555555↵ __66666666666↵ _7777777777777↵ 888888888888888↵ _9999999999999↵ __1010101010101010101010↵ ___111111111111111111↵ ____12121212121212↵ _____1313131313↵ ______141414↵ _______ 15↵ という風なひし形が出力されます。 「_」は実際には出力されません。 これを _______1↵ ______222↵ _____33333↵ ____4444444↵ ___555555555↵ __66666666666↵ _7777777777777↵ 888888888888888↵ _9999999999999↵ __00000000000↵ ___111111111↵ ____2222222↵ _____33333↵ ______444↵ _______5↵ という風にしたいです。 (上から10段目以降は1の位が出力されるようにしたいのです) それにはこのプログラムをどう修正すればよいでしょうか?

    • ベストアンサー
    • Java
  • JSPのcharAt()について

    JSPです。text1.txtをBufferedReaderで読み込んで、一文字ごとにchar型のline[]という配列に入れようとしています。 しかし、l.charAt();の部分でエラー起きてしまいます。 原因は何なのでしょう? 文字列をString型に直接(String l = "aaaaaa";のように)書き込むと動くようです。 String path = getServletContext().getRealPath("/WEB-INF/text1.txt"); BufferedReader br = new BufferedReader(new FileReader(path)); String l = ""; char line[]; while((l = br.readLine()) != null){ line = new char[l.length()]; for(int j=0; j <= l.length(); j++){ line[j] = l.charAt(j); out.print(l.charAt(j)); } } どこがおかしいのか、原因がわかる方教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • jspでの二次元配列

    こんにちは。初めて質問させていただきます。よろしくお願いします。 現在javaで作ったプログラムをjspでも使えるようにしようと考えているのですが、 二次元配列がうまくjspで反映されず困っています。 jspに関してはほとんど無知で一から勉強している次第です。 そのためなるべく簡単に、と思い 以下のプログラムを、<% %>の間に入れるだけで動かせないかと思ったのですが エラーが出てしまいました。一次元の配列ならばできたのですが... ちなみに以下のプログラムはcsvファイルを読み込み、 多次元配列に格納していくというものです。 稚拙なプログラムで申し訳ありません... どなたかご教授いただければ幸いです。 import java.io.*; import java.util.StringTokenizer; import java.util.ArrayList; class Dog{  public static void main(String args[]) throws IOException{      String csv = "dognum.csv";      BufferedReader br = new BufferedReader(new FileReader(csv)); String[][] array = new String[100][]; int i = 0; while (true) { String line = br.readLine(); if(line==null) break; array[i] = line.split(","); i++; } for (i = 0; i < 101; i++) { for (int j = 0; j < array[i].length; j++) { System.out.println("["+i+"]["+j+"] = " + array[i][j]); } } } }

  • Java for文 だけで逆ピラミッドを作る

    教えてください。 for 文だけで逆ピラミッドを作りたいのですが、*の数が2個ずつ減ればピラミッド 作成なのですが、私の文だと*は1個ずつしか減りません。 2個の指定はどのうように記述すればよいでしょうか? *を3と指定した場合 ***** (5) -***   (3) --*     (1) と表示したいのですが、下の文だと ***** (5) -****  (4) --***   (3) となってしまいます。 import java.io.*; class Sample4 { public static void main(String [] args) throws IOException { System.out.println("いくつ*を入力しますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int j =0; int i =0; int s =0; //行数制御 for(i=0; i<num; i++) { for(s=0; s<i; s++) { System.out.print("-"); } for(j=num*2-1; j>i; j--) { System.out.print("*"); //System.out.print("d"); } //改行タグ System.out.print("\n"); } } }

  • JAVAのwhileループについての質問です

    こんばんわ。 javaのforループをwhileループ構文に書き換える問題で詰まっています。 僕はプログラミング超初心者なので、いろいろ考えたが、なかなか答えが出ていません。 ぜひ、わかる方に教えていただきたくここで質問させてもらいました。 ソースコードは以下です class S7j4{ public static void main(String args[]){ short a[] = {26,54,39,71,83,100,98,47,82,65}; short work; int i,j,n; n = 10; for (i = 0;i< n; i++) System.out.print(a[i] +" , "); System.out.println(); for(i = 0; i < n; i++) for(j = 0; j < n;j++) if(a[i] < a[j]){ work = a[i]; a[i] = a[j]; a[j] = work; } for(i = 0; i< n;i++) System.out.print(a[i] + " , "); System.out.println(); } } ぜひ一つよろしくお願いしますm(-_-)m

  • while doについて

    九九の表で、forの2重のプログラムは作成できたのですが、whileとdo~whileを使って書き直すやり方がわからないのです。 どうか教えてください。お願いします。 #include <stdio.h> main() { int i,j; for(j = 1; j <= 9; j++){ for(i = 1; i <= 9; i++) printf("%3d", j*i); printf("\n"); } }

  • C++ for文からwhile文への変換方法

    まずは単刀直入にこのプログラムをご覧ください。 int two[6][10]; for(int j=0; j<net; j++){ for(int i=0; i<10; i++){ input_file >> two[j][i]; if(two[j][i]==0) break; } } for(int j=0; j<net; j++){ for(int i=0; i<10; i++){ cout << two[j][i] << " "; if(two[j][i]==0) break; } cout << endl; } このfor文をwhile文に置き換えて表示させるやりかたがよくわかりません。 今ゼミの課題でC++のプログラムに取り組んでおり、ファイル内の数字の配列を読み込んでそれを画面に表示させるプログラムを作ってるのですが、この部分がよくわからず苦戦しています。 ちなみに表示させる数字は以下の通りです。 9 11 8 0 1 10 6 0 8 2 4 10 0 5 8 7 2 0 1 3 10 4 0 2 4 12 0 どなたかご教授よろしくお願いします<(_ _)>

  • java ネストしたfor文について

    ***** **** *** ** * 上のように*が減るようにしたいのですが下のソースではどこが悪いか教えてください class TestGoo{ public static void main(String args[]){ for(int i = 5; i>=1; i--){ for(int j = 5;j>=1; j--){ System.out.print('*'); } System.out.println(); } } }