2013-12-15 32 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; 
} 

}