Java 阅读行时发出else语句
所以我要做的是从一个文件中读取,让用户输入HR,然后是一些数字如果找到了输入,它会打印出输入所在的行我已经排序好了,但我的问题是我的else语句如果找不到HR代码,它会打印出它没有找到输入,但我的问题是即使他们找到了数字如果已输入,它将为所有没有数字的行打印else语句。(对不起,我不擅长解释)但不管怎样,这是代码 我不知道这是否更容易理解,但我想做的是,如果找到输入,然后打印出行,这很好。但我需要做的是。如果没有找到输入,那么我希望它打印出文件中没有找到输入,但我不希望它打印出文件中的每一行Java 阅读行时发出else语句,java,Java,所以我要做的是从一个文件中读取,让用户输入HR,然后是一些数字如果找到了输入,它会打印出输入所在的行我已经排序好了,但我的问题是我的else语句如果找不到HR代码,它会打印出它没有找到输入,但我的问题是即使他们找到了数字如果已输入,它将为所有没有数字的行打印else语句。(对不起,我不擅长解释)但不管怎样,这是代码 我不知道这是否更容易理解,但我想做的是,如果找到输入,然后打印出行,这很好。但我需要做的是。如果没有找到输入,那么我希望它打印出文件中没有找到输入,但我不希望它打印出文件中的每一行
package Assignment;
import java.util.*;
import java.io.*;
public class Planets1 {
public static void main( String [ ] args )
{
{
File file =new File("stars1.dat");
Scanner in;
Scanner keyboard = new Scanner (System.in);
System.out.println("Enter HR code : ");
String userInput = keyboard.nextLine();
try {
in = new Scanner(file);
while(in.hasNext())
{
String line=in.nextLine();
if(line.contains(userInput.toUpperCase()))
System.out.println(line);
else if(!line.contains(userInput.toUpperCase()))
System.out.println("No Planet with the HR code: " + userInput.toUpperCase() + " Was found.");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
以及在找到代码时输出的内容:
输入人力资源代码:
HR897
阿卡马尔;Theta 1 Eridani;人力资源897
没有发现HR代码为HR897的行星
没有发现HR代码为HR897的行星
没有发现HR代码为HR897的行星
没有发现HR代码为HR897的行星
没有发现HR代码为HR897的行星
找不到HR代码为HR897的行星。如果。如果对输入文件中的每一行执行,则为else 因此,如果文件中有一行与您输入的人力资源代码匹配,则打印该行 但是对于所有其他与人力资源代码不匹配的行,将打印“未找到行星”消息 处理完文件中的所有行后,您需要等待,然后才能决定是否打印“未找到行星”消息:
不确定这是否能解决您的问题,但有一些建议:1)在
if
和else if
主体周围添加{}
。2) 如果(…)是一个简单的else
.3)为什么在循环条件中使用hasNext()
,而在循环条件中使用nextLine()
?您知道有一个hasNextLine()
,对吗?4)如果您不想为不匹配的行打印任何内容,为什么不直接删除整个,否则如果整个部分?我可能误解了您的意图……5)问题中的前几行和最后一行代码格式不正确。
boolean found = false;
while(in.hasNext())
{
String line=in.nextLine();
if(line.contains(userInput.toUpperCase())) {
System.out.println(line);
found = true;
}
}
if (found == false) {
System.out.println("No Planet with the HR code: " + userInput.toUpperCase() + " Was found.");
}