user3319290
user3319290

Reputation: 37

How to include white spaces in next() without using nextLine() in Java

I am trying to make the user input a string, which can both contain spaces or not. So in that, I'm using NextLine();

However, i'm trying to search a text file with that string, therefore i'm using next() to store each string it goes through with the scanner, I tried using NextLine() but it would take the whole line, I just need the words before a comma. so far here's my code

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;
    }
}

The code works when the user inputs a word with no spaces, but when they input two words, the condition isn't met.

the text file just includes a number of Airports, their IATA, city, and country. Here's a sample:

ADL, Adelaide, Australia
IXE, Mangalore, India
BOM, Mumbai, India
PPP, Proserpine Queensland, Australia

Upvotes: 2

Views: 4294

Answers (2)

Kristof
Kristof

Reputation: 249

By default, next() searches for first whitespace as a delimiter. You can change this behaviour like this:

Scanner s = new Scanner(input);
s.useDelimiter("\\s*,\\s*");

By this, s.next() will match commas as delimiters for your input (preceeded or followed by zero or more whitespaces)

Upvotes: 3

Jonny Henly
Jonny Henly

Reputation: 4233

Check out the String#split method.

Here's an example:

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);
    }
}

Output:

ADL
Adelaide
Australia
IXE
Mangalore
India
BOM
Mumbai
India
PPP
Proserpine Queensland
Australia

Upvotes: 0

Related Questions