if else语句执行

问题描述:

我是编程新手。当我运行下面的代码时,它只执行if语句并只打印“xmap”。但是我的输入既包含'x'也包含'y',所以我希望我的程序能够抓取每一行,并查看'x'或'y'并同时打印。谁能帮我这个。if else语句执行

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); 
    } 
} 
+2

备注,公约明智,类应该开始与大写。 '公共课Abc' – 2012-08-03 22:41:32

+0

向我们显示您的输入文件。 – 2012-08-03 22:50:39

它输出XMAP 如果输入是x和它有4列。 (!再次)如果输入为x它将打印ymap 现在也没有4列

也许,这就是你想要的东西,而不是:

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])); 
    } 
} 

另一个变化,

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])); 
} 
+0

谢谢,它帮助:) – user1549861 2012-08-03 23:20:02