我是完全的初学者。有一个像这样的多行数据输入文件
name, number, number,...
我可以将该行作为字符串读取,但需要将值输入到数组中。我怎么做。我花了2天时间试图弄清楚。
我是完全的初学者。有一个像这样的多行数据输入文件
name, number, number,...
我可以将该行作为字符串读取,但需要将值输入到数组中。我怎么做。我花了2天时间试图弄清楚。
要检查的事情:
但特别是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());
有很多方法可以给这只猫剥皮。
正如您所提到的,每一行都有用逗号分隔的单词。因此,您可以读取这些行,然后拆分这些行以获得每行的数组。您可能希望将这些数组添加到另一个集合,例如 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);
数组是固定大小的,因此您必须知道要通过循环添加多少元素。我建议使用 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
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);