前提・実現したいこと
後に出てくるfor文のiによって
i=0では
N ow loading…
i=1では
o N w loading…
i=2では
w No loading…
のような形で表示するプログラムが作りたいです。
該当のソースコード
class Load2{ public static void main(String[] args) throws InterruptedException{ String Load[]={"N","o","w"," ","L","o","a","d","i","n","g","…"," "}; for(int i=0;i<Load.length;i++)System.out.print(Load[i]);//元の文章を一度表示した後、改行 System.out.println("\n"); String Tmp[]={" "," "," "," "," "," "," "," "," "," "," "," "," "};//仮入れ用 String str_space = " "; while(true){ for(int i=0;i<Load.length;i++){ System.out.print(Tmp[i]); System.out.println("\n"); System.out.print(Load[i]); Thread.sleep(100); //削除する前に1秒待つ String t=Load[i];//三点交換 Load[i] = Tmp[i]; if(i==0)Tmp[12] = str_space;//Tmpの1つ前に入っていた文字を削除 else Tmp[(i-1)] = str_space;//i=0ではwhile(true)で帰ってきた場合にi=12のTmpに文字があるからそれを空白にする Tmp[i]=t; System.out.print("\r"); for (int r=0; r<Load.length; r++){//文字の数だけ半角の空白に置き換える System.out.print(" "); } } } } }
試したこと
とりあえず、現状のコードを上に記載しています。
空白を配列に代入するためにstr_spaceに空白を指定すればいけるかなと思い、str_spaceにしています。
配列をメインに作りたいと考え、
Tmpの配列 Loadの配列
と配列表示の位置を固定化したうえで、
for文ののiの数字で、0~12で指定されたLoadの配列の文字をTmpの配列に格納された空白と入れ替える…みたいなことをやりたいです。
\rの挙動がよくわからないです…ただ、消すときにLoadとTmp両方消す必要があるのでそこは違うのかなって思ってます。
###出来ないこと
配列の固定化になります。現状なぜかNow loading…のうちの1文字しか現れないという現象に陥っています。
###tetutetuさんへ
java
1import java.io.IOException; 2 3class Load2{ 4 public static void main(String[] args) throws InterruptedException, IOException{ 5 String Load[]={"N","o","w"," ","L","o","a","d","i","n","g","…"," "}; 6 System.out.println("\n"); 7 while(true){ 8 for(int i=0;i<Load.length;i++){ 9 for(int r=0;r<=i;r++){ 10 if(r==i)System.out.print(Load[r]); 11 else System.out.print(" "); 12 } 13 System.out.println("\n"); 14 for(int t=0;t<Load.length;t++){ 15 if(t==i){ 16 System.out.print(" "); 17 continue; 18 } 19 else System.out.print(Load[t]); 20 } 21 Thread.sleep(100); //削除する前に1秒待つ 22 new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor(); 23 System.out.print("\r"); 24 for (int r=0; r<Load.length; r++){//文字の数だけ半角の空白に置き換える 25 System.out.print(" "); 26 } 27 } 28 } 29 } 30}
補足情報(FW/ツールのバージョンなど)
Terapadで入力、JDKによりwindows標準搭載のコマンドプロンプトで動かしています。
回答2件
あなたの回答
tips
プレビュー