indexOf для пробела в строке

в строке есть пробел, но когда я запускаю программу, она возвращает -1, это означает, что в строке нет пробелов Вот код:

import java.util.Scanner;


public class Main {

     public static void main(String[] args) {
         Scanner scan = new Scanner(System.in);
         String s = scan.next();
         System.out.println(s.indexOf(' '));
    }

}

5 ответов


Scanner.next() возвращает следующий маркер на входе, и по умолчанию маркеры разделены пробелами. т. е. s гарантированно не содержит пробелов.

может быть, вы имели в виду String s = scan.nextLine();?


это отлично работает для меня.

System.out.println("one word".indexOf(' '));

Это из-за следующего метода сканера. проверить это


сканер считывает текст, разделенный пробелами, который может быть разрывом строки, но также и пробелом. Вот почему сканирование.next () вернет строку без пробелов. Если вам нужны разрывы строк, используйте scan.nextLine ()


попробовать

String s = scan.nextLine();

как сканировать.следующий() возвращает следующее "слово", которое не может содержать пробелы.


использовать scan.nextLine(), потому что scan.next() будет читать, пока не встретит пробел (вкладка, пробел, ввод), поэтому он закончит получать, когда он видит пространство. Вы сами можете догадаться об этом, напечатав s тоже! будьте успешны!