public static void main(String[] args) { String text =decode("A5B10CD9E2F5G"); System.out.println(text); } private static String decode(String string) { String str=""; String next=string.substring(0,1); String last=string.substring(0,1); String txst=""; int duplicate=1; for(int i=0;i<string.length();i++){ if(str.length()!=0){ last=str.substring(str.length()-1,str.length()); //strに何も入っていない時、lastをstrの最後の文字にする } if(i!=(string.length()-1)){ next=string.substring(i+1,i+2); //iがstringの最後を取らない時、nextはstringの次を取る。 } if(checker(last)==1) //最後の文字が数字の時 { if(i==(string.length()-1)) //それが最後の文字ならば { duplicate = Integer.parseInt(last); //文字列に変換し for(int y=0;y<duplicate;y++){ str+=txst; //その回数txstをstrに加える。 } } else if(checker(next)==1){ while(checker(next)==1){ //次の文字が数字である限り next=string.substring(i+1,i+2); //nextの更新 last+=next; //last変数に次の数字を加える i++; //次の桁を見る } duplicate = Integer.parseInt(last); for(int y=0;y<duplicate;y++){ str+=txst; } txst=next; } else{ duplicate = Integer.parseInt(last); for(int y=0;y<duplicate;y++){ str+=txst; txst=next; } } }else{ str+=last; txst=last; //文字を保持するtxst } } return str; } private static int checker(String x) { for(int i=0; i<10;i++){ String s = String.valueOf(i); if(x.equals(s)){ return 1; //受け取った文字が0~9の時、1を返す } } return 0; //受け取った文字がそれ以外の時、0を返す。 } } コード
うまいこと動きません。
教えて下さい!
どう動くんでしょうか
何をしたいんでしょうか
厳しいこと言いますけど、コードを見て察しろじゃなく、その自分のコードを説明できない限り
いつまで経っても動かないし、ましてや上達もしませんよ。
最低でも、「どういうコードを書きたく」て、「どう書いたつもり」だが、「どういうふうにしか動かない」というのが説明できなければ適切に答えようないです。
A5B10CD9E2F5Gを展開してAAAAABBBBBBBBBBCDDDDDDDDDEEFFFFFGにしたいです。
現在は動かすとAAAAAAAAAAAAAと出力されます。
decode()本体は?
"A5B10"は'A'が5個 'B'が10個に展開されれば良いのですか?
文字の後には必ず個数が入っている・・・で、良いのでしょうか?・・・”CD9”を見ると違うような??;
数値の最大最小は?
アルファベットだけですか? 数字はないのですか?
アルファベットだけです。
数字は無いです。
文字の後に必ず数字が入っているわけではありません。
回答1件
あなたの回答
tips
プレビュー