如何在Java中不使用nextLine()而在next()中包含空格

如何在Java中不使用nextLine()而在next()中包含空格,java,java.util.scanner,Java,Java.util.scanner,我试图让用户输入一个字符串,它可以包含空格,也可以不包含空格。因此,我使用NextLine() 但是,我试图用该字符串搜索文本文件,因此我使用next()来存储扫描仪通过的每个字符串,我尝试使用NextLine()但它会占用整行,我只需要逗号前的单词。 到目前为止,这是我的代码 System.out.print("Cool, now give me your Airport Name: "); String AirportName = kb.nextLine(); AirportName =

我试图让用户输入一个字符串,它可以包含空格,也可以不包含空格。因此,我使用NextLine()

但是,我试图用该字符串搜索文本文件,因此我使用next()来存储扫描仪通过的每个字符串,我尝试使用NextLine()但它会占用整行,我只需要逗号前的单词。 到目前为止,这是我的代码

System.out.print("Cool, now give me your Airport Name: ");

String AirportName = kb.nextLine();
AirportName = AirportName + ",";

while (myFile.hasNextLine()) {
    ATA = myFile.next();
    city = myFile.next();

    country = myFile.next();
    myFile.nextLine();
    // System.out.println(city);

    if (city.equalsIgnoreCase(AirportName)) {
        result++;
        System.out.println("The IATA code for "+AirportName.substring(0, AirportName.length()-1) + " is: " +ATA.substring(0, ATA.length()-1));
        break;
    }
}
当用户输入一个不带空格的单词时,该代码起作用,但当用户输入两个单词时,该条件不满足

该文本文件仅包括多个机场、国际航空运输协会(IATA)、城市和国家。以下是一个示例:

ADL, Adelaide, Australia
IXE, Mangalore, India
BOM, Mumbai, India
PPP, Proserpine Queensland, Australia
默认情况下,next()搜索第一个空格作为分隔符。您可以这样更改此行为:

Scanner s = new Scanner(input);
s.useDelimiter("\\s*,\\s*");
这样,
s.next()
将匹配逗号作为输入的分隔符(前面或后面有零个或多个空格)

检查该方法

下面是一个例子:

String test = "ADL, Adelaide, Australia\n"
            + "IXE, Mangalore, India\n"
            + "BOM, Mumbai, India\n"
            + "PPP, Proserpine Queensland, Australia\n";

Scanner scan = new Scanner(test);
String strings[] = null;

while(scan.hasNextLine()) {
    // ",\\s" matches one comma followed by one white space ", "
    strings = scan.nextLine().split(",\\s");

    for(String tmp: strings) {
        System.out.println(tmp);
    }
}
输出:


我不确定你是不是用最简单的方法来做这件事。你能给出一个你想要解析的文件和想要保存的文件的例子吗?我很确定我做的很艰难,但我使用的代码我知道,我还是一个初学者。这是一个包含几行的文本文件,每行包含IATA代码、城市和国家,正如我前面提到的。每一条线都是一样的,但是不同的代码,城市等等。我正在尝试编写一个软件,提示用户输入机场名称(城市),程序将搜索文档并打印出IATA代码。我基本上已经完成了这个程序。P.S.I(某种程度上)通过拆分输入字符串,然后添加if(字符串包含空格),然后将第一部分分配给字符串,然后我使用该字符串的条件仅与第一个单词进行比较,它们都是唯一的,所以我几乎只有一个结果。这就是我解决问题的方法,我很确定这不是最佳的解决方案,但嘿,它对我有效:D无论如何,谢谢你的时间。
ADL
Adelaide
Australia
IXE
Mangalore
India
BOM
Mumbai
India
PPP
Proserpine Queensland
Australia