我想使用分隔符","来提取文件中的第一个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(); }
}
}
答案 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) {
}
}
}