Javaの大海原をじゃばじゃばと

勉強メモとか雑記です

勉強メモ@プロJava/その9

第13章 処理の難しさの段階

「プロになるJava」より gihyo.jp

13.1.1 他のデータを参照するループ

練習問題

1.奇数番目の文字を、続く偶数番目の文字と入れ替えて出力するようにしてみましょう。続く文字がない場合はそのまま出力します。例えば"abcde"に対して"badce"と出力します。
2.1つ後の要素と比べて大きいほうを格納した配列を作ってみましょう。最後の要素は最後にそのまま出力されます。例えば、{3,6,9,4,2,1,5}に対して{6,9,9,4,2,5,5}が生成されます。

src/main/java/projava/LoopExercise.java

package projava;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class LoopExercise {
    public static void main(String[] args) {
        System.out.println("--練習問題1:文字列「abcde」について、" + "\n" + "\t" + "奇数番目の文字を、続く偶数盤目の文字と入れ替えて出力--");
        invertPrevNext("abcde");

        System.out.println("--練習問題2:一つ後の要素と比べて大きい方を格納した配列を作る" + "\n" + "\t" + "※等しい場合はその要素を格納--");
        System.out.println("配列{3, 6, 9, 4, 2, 1, 5}を実引数とすると…");
        makeBiggerNumbersArray(new int[]{3, 6, 9, 4, 2, 1, 5});
    }

    //練習問題1
    public static void invertPrevNext(String data){
        StringBuilder builder = new StringBuilder();
        char ch, odd = 0;
        for (int i = 0; i < data.length(); i++) {
            ch = data.charAt(i);
            if(i % 2 == 0 && i != data.length()-1){
                odd = ch;
                continue;
            }
            builder.append(ch);
            if(odd != 0){
                builder.append(odd);
            }
            odd = 0;
        }
        System.out.println(builder);
    }

    //練習問題2
    public static void makeBiggerNumbersArray(int[] data){
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < data.length; i++) {
            if(i == data.length-1){
                list.add(data[i]);
                break;
            }
            int bigger = data[i] >= data[i + 1] ? data[i] : data[i + 1];
            list.add(bigger);
        }
        System.out.println(Arrays.toString(list.toArray()));
    }

}

▼コンソール

おっけい!結構時間かかっちゃった^^;
でももっとスッキリ書けるんじゃないかな…まあテキスト2周目以降の課題とするか。
頭も鍛えれば鍛えられるはず…と今後の自分に期待じゃー(`_´)ゞ