在Java中读取文件,输出第一个以逗号分隔的String

时间:2015-06-25 14:11:09

标签: java string file-io

我想使用分隔符","来提取文件中的第一个String。 为什么这段代码产生的行数大于1?

public static void main(String[] args) {
    BufferedReader in = null;
    try {
        in = new BufferedReader(new FileReader("irisAfter.txt"));
        String read = null;
        while ((read = in.readLine()) != null) {
            read = in.readLine();
            String[] splited = read.split(",");
            for (int i =0; i<splited.length;i++) {
                System.out.println(splited[0]);
            } 
        }
    } catch (IOException e) {
            System.out.println("There was a problem: " + e);
            e.printStackTrace();
    } finally {
        try {
            in.close();
        } catch (Exception e) { e.printStackTrace(); }
    }
}

5 个答案:

答案 0 :(得分:5)

您正在循环内打印。这就是它多次打印的原因(如果这就是你要问的那样)。

String[] splited = read.split(",");    
System.out.println(splited[0]);

只会做

编辑:正如Abishek所提到的那样,请不要在read = in.readLine();循环内再次while,因为这样做会跳过一行。

while ((read = in.readLine()) != null) {
   String[] splited = read.split(",");
   System.out.println(splited[0]);
}

答案 1 :(得分:4)

你的意思是优于原来的行数

如果您使用splited[0],为什么要保持在循环中?它总会得到相同的字符串

答案 2 :(得分:3)

不确定为什么您的代码会以这种方式运行,但您可能会尝试使用带有分隔符的Scanner。尝试:

Scanner sc = new Scanner( new File("myNumbers")).useDelimiter(",");
String firstString = sc.next(); 
/// check for null..

答案 3 :(得分:2)

你读了&#34; irisAfter.txt&#34;的每一行,然后将每一行分成&#34;,&#34;在多行元素中,然后在行中打印出该行的第一个元素的次数与行中的元素一样多次。多行*每行多个元素=输出中的行多于输入中的行。

更改

for (int i =0; i<splited.length;i++) {
      System.out.println(splited[0]);

}

if (splited.length > 0)
{
     System.out.println(splited[0]);
}

这样你只能在自己的行上打印出每一行的第一个元素,并且只有在实际存在第一个元素时才会打印出来。

你也在跳过其他每一行。如果您不想这样做,请删除该行 read = in.readLine(); 略低于 while ((read = in.readLine()) != null) {

(你现在正在阅读一行,然后在下一行读取,放弃第一行读取。然后你处理第二行,之后循环重新开始,你读到第三行,然后读入第四行,丢弃第三行等等。)

答案 4 :(得分:1)

如果你修改这样的代码,你应该得到你期望的结果。

 public static void main(String[] args) {

        BufferedReader in = null;
        try {
            String[] splited;
            in = new BufferedReader(new FileReader("irisAfter.txt"));
            String read = null;
            while ((read = in.readLine()) != null) {
                read = in.readLine();
                splited = read.split(",");
            }

            System.out.println(splited[0]);


        } catch (IOException e) {
            System.out.println("There was a problem: " + e);
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (Exception e) {
            }
        }
}