-1

我是完全的初学者。有一个像这样的多行数据输入文件

name,  number,  number,...

我可以将该行作为字符串读取,但需要将值输入到数组中。我怎么做。我花了2天时间试图弄清楚。

4

4 回答 4

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());

有很多方法可以给这只猫剥皮。

于 2013-08-18T05:23:19.077 回答
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);
于 2013-08-18T05:24:42.603 回答
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
于 2013-08-18T05:19:21.470 回答
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);
于 2013-08-18T05:28:33.200 回答