Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阅读行时发出else语句_Java - Fatal编程技术网

Java 阅读行时发出else语句

Java 阅读行时发出else语句,java,Java,所以我要做的是从一个文件中读取,让用户输入HR,然后是一些数字如果找到了输入,它会打印出输入所在的行我已经排序好了,但我的问题是我的else语句如果找不到HR代码,它会打印出它没有找到输入,但我的问题是即使他们找到了数字如果已输入,它将为所有没有数字的行打印else语句。(对不起,我不擅长解释)但不管怎样,这是代码 我不知道这是否更容易理解,但我想做的是,如果找到输入,然后打印出行,这很好。但我需要做的是。如果没有找到输入,那么我希望它打印出文件中没有找到输入,但我不希望它打印出文件中的每一行

所以我要做的是从一个文件中读取,让用户输入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.");
}