如何将一行字符串输入从数据文件加载到数组中

时间:2013-08-18 05:16:57

标签: java

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

name,  number,  number,...

我可以将该行作为字符串读取,但需要将值输入到数组中。我怎么做。我花了两天的时间试图解决这个问题。

4 个答案:

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