前提・実現したいこと
Javaについてです。
5を入力して砂時計を表示したいのですが、近いものにはなるのですが、きれいになりません。
1番左端の下から2番目を四角にしたいのですが、〇になってしまいます。
どこが間違っているのかわかりません。
変数名やコードが変かと思いますがよろしくお願いします。
該当のソースコード
package test; import java.util.Scanner; public class Test0806 { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Scanner scan = new Scanner(System.in); System.out.println("整数を入力してください"); int num = scan.nextInt(); scan.close(); int num2 = num * 2 -1; int count = 0; int jShare = 0; int x = 1; for(int i = 0; i < num2; i++) { if(i == num) { count = 1; } if(i < num) { jShare = num2 - count; }else { jShare = num + count; } for(int j = 0; j < jShare; j++) { if(i < num) { if(j < i) { System.out.print("□"); }else { System.out.print("●"); } }else { if(j < num - 1 + x){ System.out.print("□"); }else { System.out.print("●"); } if(i > num) { x++; } } } count++; System.out.println(); } } }
すみません、コードはコードブロックで囲んでください。
編集画面で、<code>という場所を押し、出てきた``` ```の間にソースを貼り付けてください。
「どういう出力になって欲しいか」と、「現在どういう出力になっているか」を書いてください。
「1番左端の下から2番目を四角にしたいのですが、〇になってしまいます。」と言葉で書かれるよりも、実際の出力を出してもらった方が早いです。
なおその際は、コードブロック内(実際のコードを書くコードブロックとは別の場所に新たに設けて)に書いてもらうと整います。
整数を入力してください
5
●●●●●●●●●
□●●●●●●●
□□●●●●●
□□□●●●
□□□□●
□□□□□●
□□□□□□□
□□□□□□□□
□□□□□□□□□
「1番左端の下から2番目」は四角になっているようですが?
あやしいのは、if(j < num - 1 + x){ です。x のインクリメント箇所がおかしい。x と j が同時にインクリメントされ、x の値は j ループの外側に残り、どんどん増えるのですぐに黒丸が出なくなります。x を捨てて count を使ってもよい。
申し訳ありませんでした。
今確認してみると先ほどの結果と違っていました。
おそらく投稿する際にどこか修正してしまったようです。
回答1件
あなたの回答
tips
プレビュー