-2

私はプログラミングが初めてです。以下のコードを実行すると、if ステートメントのみが実行され、「xmap」のみが出力されます。しかし、私の入力には「x」と「y」の両方が含まれているため、プログラムにすべての行をクロールさせ、「x」か「y」かを確認し、両方を出力する必要があります。誰でもこれで私を助けることができますか?

import java.io.*;
import java.util.*;

public class abc {

    public static void main(String[] args) {
        Map<String, List<String>> xMap = new HashMap<String, List<String>>();
        Map<String, List<String>> yMap = new HashMap<String, List<String>>();
        try {
            Scanner scanner = new Scanner(new FileReader("C:/"));

            while (scanner.hasNextLine()) {
                String nextLine = scanner.nextLine();
                String[] column = nextLine.split(":");
                if (column[0].equals("x")) {
                    if (column.length == 4) {
                        xMap.put(column[1], Arrays.asList(column[2], column[3]));
                    } else {
                        yMap.put(column[1], Arrays.asList(column[2], column[3]));
                    }
                }

            }
            scanner.close();

        }

        catch (Exception e) {

            e.printStackTrace();
        }
        System.out.println(xMap);
        System.out.println(yMap);
    }
}
4

2 に答える 2

1

入力が x で 4 列の場合、xmap を出力します。入力が x (再び!) で、4 列でない場合はymap を出力します。

たぶん、それはあなたが代わりに望むものです:

if (column[0].equals("x")) {
    if (column.length == 4) {
        xMap.put(column[1], Arrays.asList(column[2], column[3]));
    } 
else if (column[0].equals("y")){
    if (column.length == 4) {
        yMap.put(column[1], Arrays.asList(column[2], column[3]));
    }
}
于 2012-08-03T22:40:48.563 に答える
1

もう一つのバリエーション、

if (column.length == 4) {
    if (column[0].equals("x")) {
        xMap.put(column[1], Arrays.asList(column[2], column[3]));
    }
    else if (column[0].equals("y")){
        yMap.put(column[1], Arrays.asList(column[2], column[3]));
    }
}

さらに別のバリエーション、

if (column.length == 4 && column[0].equals("x")) {
    xMap.put(column[1], Arrays.asList(column[2], column[3]));
}
else if (column.length == 4 && column[0].equals("y")){
    yMap.put(column[1], Arrays.asList(column[2], column[3]));
}
于 2012-08-03T22:58:46.837 に答える