字符串数组未返回预期值

时间:2014-05-10 08:07:36

标签: java

我对Java很新,但这让我在过去半小时左右难倒。我正在从文本文件中读取行并将它们存储为String Arrays。从这里开始,我尝试使用数组中的值来初始化我拥有的另一个类。要初始化我的Route类(因此使用routeName),我需要从数组中取第一个值并将其作为字符串传递。当我尝试为routeName返回s [0]时,我给出了我文本文件的最后一行。如何解决这个问题的任何想法将不胜感激。我仍处于测试过程中,这就是为什么我的代码几乎没有完成。

我的文本文件如下。

66

Uq Lakes,Southbank

1,2,3,4,5

2,3,4,5,6-

和我的代码:

import java.io.*;
import java.util.*;


public class Scan {

    public static void main(String args[]) throws IOException {

        String routeName = "";
        String stationName = " ";
        Scanner timetable = new Scanner(new File("fileName.txt"));
        while (timetable.hasNextLine()) {
            String[] s = timetable.nextLine().split("\n");
            routeName = s[0];

        }
        System.out.println(routeName);
    }

}

3 个答案:

答案 0 :(得分:1)

Scanner.nextLine()返回一行,因此按“\n”拆分始终会提供单个元素数组,例如:

timetable.nextLine().split("\n"); // e.g., "1,2,3,4,5" => ["1,2,3,4,5"]

请尝试使用“,”进行拆分,例如:

timetable.nextLine().split(",");  // e.g., "1,2,3,4,5" => ["1", "2", "3", "4", "5"]

注意:如果您打算让数组包含单独的行,请查看this SO post

Scanner s = new Scanner(new File(filename));
List<String> lines = new ArrayList<String>();  // A List can be dynamically resized
while(s.hasNextLine()) lines.add(s.nextLine()); // Store each line in the list
String[] arr = lines.toArray(new String[0]);   // If you really need an Array, use this

答案 1 :(得分:1)

您正在调用的方法 timetable.nextLine.split(“\ n”)将返回String数组。 所以每次调用这个方法时都会用文件中的新行覆盖你的数组,最后在你的数组中添加最后一行,你最后得到了lat行。 下面是您可以使用的代码。

public static void main(String[] args)  throws FileNotFoundException {
       String routeName = "";
       Scanner timetable;
       int count = 0;
       String[] s = new String[10];
       timetable = new Scanner(new File("fileName.txt"));
       while (timetable.hasNextLine()) {
             String line = timetable.nextLine();
             s[count++] = line;
       }
       routeName = s[0];
       System.out.println(routeName);
}

答案 2 :(得分:0)

你的while循环遍历所有行,并将当前行设置为routeName。这就是为什么你在你的字符串中的最后一行。当你阅读文件的第一行时,你可以做的就是休息。然后你将有第一行。