[Java] 37 戻り値を複数にしたい場合の対応

戻り値は複数にできないためデータ型が同じであればArrayListにまとめます。

今回は競走馬名と競走馬IDを引き継ぎたかったので、ArrayListにまとめて戻り値としました。

第1メソッドで作成したnameとIDをmainメソッドで共有し、IDは第2メソッド、
nameは第4メソッドで使用する

<importは省略>

public class AppTest {
    static String url = "jdbc:mysql://localhost:3306";
    static String user = "ユーザ名";
    static String password = "パスワード";

    public static void main(String args[]) {
        ArrayList<String> nameAndID = IDSearch();
        ArrayList<ArrayList<String>> raceList = raceSearch(nameAndID);
        ArrayList<ArrayList<String>> raceListCon = raceSearch2(raceList);
        // 第4メソッドで競走馬名を使うためnameAndIDを引数に追加
        toHTML(raceListCon,nameAndID);}

    // 第1メソッド
    public static ArrayList<String> IDSearch() {
        
        <中略>

        if (IDList.size() >= 2){
            System.out.println("該当する馬が複数います。番号を入力してください。");
            int i = 1;
            for (String s : IDList) {
                System.out.println(i + " " + s);
                i = i + 1;}

            InputStreamReader isr2 = new InputStreamReader(System.in);
            BufferedReader br2 = new BufferedReader(isr2);

            String num = null;
            try {
                num = br2.readLine();}
            catch (IOException e) {
                e.printStackTrace();}

            Integer numInt = Integer.parseInt(num);
            String ID = IDList.get(numInt - 1);
            System.out.println("該当馬のIDは" + ID + "です");
            
            // 競走馬名と競走馬IDをArrayListにまとめる
            ArrayList<String> nameAndID = new ArrayList<String>();
            nameAndID.add(name);
            nameAndID.add(ID);

            return nameAndID;}

        else if (IDList.size() == 0){
            System.out.println("該当する馬はいません");
            ArrayList<String> nameAndID = null;
            System.exit(0);

            return nameAndID;}

        else {
            String ID = IDList.get(0);
            System.out.println("該当馬のIDは" + ID + "です");
            ArrayList<String> nameAndID = new ArrayList<String>();
            nameAndID.add(name);
            nameAndID.add(ID);

            return nameAndID;}}

    // 第2メソッド
    public static ArrayList<ArrayList<String>> raceSearch(ArrayList<String> nameAndID) {
        System.out.println("第2メソッド内出力 " + nameAndID);

        // 引き継いだArrayListから競走馬IDを取り出す
        String ID = nameAndID.get(1);
        System.out.println("ID " + ID);

        String birthYear = ID.substring(0,4);
        Integer birthYearInt = Integer.parseInt(birthYear);
        Integer startYear = birthYearInt + 2;

        System.out.println("最速デビュー年 " + startYear);

        <中略>

    // 第4メソッド
    public static void toHTML(ArrayList<ArrayList<String>> raceListCon,\
    ArrayList<String> nameAndID) {
        System.out.println("第4メソッド内出力1 " + raceListCon + \
        "第4メソッド内出力2 " + nameAndID);