-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 列,它会打印 xma​​p 。如果输入是 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 回答