我是初学者。有一个像这样的多行的数据输入文件
name, number, number,...
我可以将该行作为字符串读取,但需要将值输入到数组中。我怎么做。我花了两天的时间试图解决这个问题。
答案 0 :(得分:1)
要检查的事项:
但特别是String.split()
:
String list = "first second third";
String[] items = list.split(" "); // = { "first", "second", "third" };
或使用正则表达式:
String list = "first, second, third";
String[] items = list.split("[ ,]+"); // = { "first", "second", "third" };
然后你有像StringTokenizer
这样的东西,可以做到这一切,例如:
String values = "name, 1, 2, 3";
String name = null;
List<Integer> numbers = new ArrayList<Integer>();
StringTokenizer tokenizer = new StringTokenizer(value, " ,");
if (tokenizer.hasMoreTokens()) // first token is name
name = tokenizer.nextToken();
else
throw new Exception("No name!");
while (tokenizer.hasMoreTokens()) // rest are numbres
numbers.add(Integer.parseInt(tokenizer.nextToken());
或者您可以使用扫描仪做有趣的事情:
String values = "name, 1, 2, 3";
Scanner scanner = new Scanner(values);
scanner.useDelimiter("[ ,]+"); // regular expression, 1 or more spaces/commas
String name = null;
List<Integer> numbers = new ArrayList<Integer>();
if (scanner.hasNext()) // first token is name
name = scanner.next();
else
throw new Exception("No name!");
while (scanner.hasNextInt()) // rest are numbers
numbers.add(scanner.nextInt());
有很多方法可以给这只猫上皮。
答案 1 :(得分:1)
正如您所提到的,每一行都有以逗号分隔的单词。因此,您可以读取线条,然后拆分线条以获得每条线条的数组。您可能希望将这些数组添加到另一个集合,例如ArrayList:
所以我假设您有一个文件读取逻辑,并且您将获得一个名为line
的字符串中的每一行。您需要将这些部分放在代码中的正确位置:
// collection to hold array of words in each line
ArrayList<String[]> listOfWords = new ArrayList<String[]>();
// split your line into an array of words
String wordsInLine[] = line.split("[ ,]+");
// add words array to your collection
listofWords.add(wordsInLine);
答案 2 :(得分:0)
数组是固定大小的,因此您必须知道要通过循环添加多少元素。我建议使用ArrayList。
这应该有所帮助:http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html
ArrayList<String> listOfStrings = new ArrayList<String>(); // instantiating the object
listOfStrings.add(STRING_VARIABLE) // adding onto the ArrayList.
listOfStrings.get(INDEX_NUMBER) // gets the actual String object, using the index number
答案 3 :(得分:0)
String strFromFile = "name,number,number,";
if(strFromFile.contains(","))
{
String[] splitInput = strFromFile.split(",");
String part1 = splitInput[0]; //gives you name
String part2 = splitInput[1]; // gives you number
.....
}
else
{
throw new IllegalArgumentException("String " + strFromFile + " does not contain ,");
}
List<String[]> finalList = new ArrayList<String[]>();
finalList.add(splitInput);