从输入java中解析不同类型的数据

时间:2013-12-15 18:59:41

标签: java arrays parsing

将在命令行中输入不同的数据列表。

"J,A,V,A"
"4,H,11,V,3,H"

我需要将第一个列表存储在char数组中。我还希望在“H,V,H”的char数组和“4,11,3”的int数组中使用下一行。这样做的最佳方法是什么?我犹豫是否要分开逗号,因为我不知道输入是否会被逗号,逗号和空格分开。我遇到困难,因为当我使用扫描仪时,所有内容都保留在一个字符串中,当我尝试将其拆分时,字符串就变成了一个字符串数组。

我遇到困难,因为当我使用扫描仪时,所有内容都保留在一个字符串中,当我尝试将其拆分时,字符串就变成了一个字符串数组。

1 个答案:

答案 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;
}

}