我的程序有一部分,我遇到了问题。我想要从文件中写下来信。该文件包含一些字母和数字,每个字母和数字都在一个单独的行中。 (我只需要" P"," O"和#34; W"字母)我不明白为什么程序不能输出字母。代码和下面的文件图像。
http://i.imgur.com/sdyGkCn.jpg
File file = new File("file.txt");
Scanner in;
try {
in = new Scanner(file);
while (in.hasNextLine())
{
if(in.nextLine() == "W" || in.nextLine() == "O" || in.nextLine() == "P")
{
System.out.println(in.nextLine());
}
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
您的代码正在跳过检查某些行。每当你打电话给in.nextLine()
时,它都会读到第二行。
试试这种方式
File file = new File("file.txt");
Scanner in;
try {
in = new Scanner(file);
while (in.hasNextLine())
{
String MyLine = in.nextLine();
if(MyLine.equals( "W") || MyLine.equals( "O") || MyLine.equals( "P"))
{
System.out.println(MyLine);
}
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
答案 1 :(得分:0)
您应该使用string.equals(Object obj)方法来比较字符串。 运算符==只是比较引用,但不检查字符串的实际内容。
在这一行
if(in.nextLine() == "W" || in.nextLine() == "O" || in.nextLine() == "P")
每次都获得新行,你调用in.nextLine()方法
答案 2 :(得分:0)
我修复了你的代码:
File file = new File("file.txt");
Scanner in;
try {
in = new Scanner(file);
while (in.hasNextLine()) {
String tmp = in.nextLine();
if (tmp.equals("W") || tmp.equals("O") || tmp.equals("P")) {
System.out.println(tmp);
}
}
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
1)。总是使用方法equals方法来比较字符串。
2)。方法nextLine()应该在循环内部使用一次。每次使用此方法都会从文件中读取下一行。