2013-12-15 33 views
0

將在命令行中輸入不同的數據列表。我需要在char數組中存儲第一個列表。我也希望在「H,V,H」的char數組中有下一行,並且有一個「4,11,3」的int數組。做這件事的最好方法是什麼?我不願意分開逗號,因爲我不知道輸入是否會被逗號,逗號和空格分開。我很困難,因爲當我使用掃描器時,所有東西都停留在一個字符串中,當我嘗試拆分它時,字符串變成了一個字符串數組。從輸入java解析不同類型的數據

我很困難,因爲當我使用掃描儀時,所有東西都停留在一個字符串中,當我嘗試拆分它時,字符串變成了一個字符串數組。

+0

*「什麼是去這樣做的最好方法是什麼?」 *我做了一些研究,然後再嘗試一些事情。 [你有什麼嘗試?](http://www.whathaveyoutried.com/)我的意思是*除了*問我們。 –

+2

'str.split(「\\ s *,\\ s *」)'會照顧分裂問題。 – arshajii

+0

你爲什麼要銷燬我所做的修改?請勿使用「後退」按鈕編輯帖子。請改用帖子下方的「修改」鏈接。 –

回答

0

以下似乎適用於我..只在調試器中運行它,但它在您提供的兩行輸入上運行。

import java.lang.System; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class Main { 
    public static void main(String[] args) { 
    ArrayList<Integer> ints = new ArrayList<Integer>(); 
    ArrayList<Character> chars = new ArrayList<Character>(); 

    Scanner console = new Scanner(System.in); 

    while (console.hasNext()) { 
     String line = console.next(); 
     String[] tokens = line.split("\\s*,\\s*"); 

     for (int i = 0; i < tokens.length; i++) { 
     if (isInteger(tokens[i])) { 
      ints.add(Integer.parseInt(tokens[i])); 
     } else if (isChar(tokens[i])) { 
      chars.add((char) tokens[i].indexOf(0)); 
     } 
     } 

    } 
    console.close(); 

    } 

    private static boolean isInteger(String s) { 
     try { 
      Integer.parseInt(s); 
     } catch (NumberFormatException e) { 
      return false; 
     } 
     // only got here if we didn't return false 
     return true; 
    } 

private static boolean isChar(String s) { 
if (s.length() != 1) { 
    return false; 
} 
return true; 
} 

}