2012-03-31 10 views
6

Istnieje miejsca w łańcuchu, ale po uruchomieniu programu, zwraca -1, co oznacza, że ​​nie ma miejsca w łańcuchu Oto kod:indexOf na przestrzeni łańcucha

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

} 

Odpowiedz

7

Scanner.next() zwraca następny token w danych wejściowych i domyślnie tokeny są rozdzielane białymi znakami. tj. s gwarantuje, że nie będzie zawierać spacji.

Może miałeś na myśli String s = scan.nextLine();?

3

Skaner odczytuje tekst oddzielony białymi znakami, które mogą być znakami końca linii, ale również znakami spacji. Właśnie dlatego scan.next() zwróci ciąg znaków bez spacji. Jeśli potrzebujesz podziały wiersza zamiast użyć scan.nextLine()

3

Spróbuj

String s = scan.nextLine(); 

jak scan.next() pobiera następny "słowo", które nie mogą zawierać spacji.

4

to doskonale działa dla mnie.

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

Dzieje się tak z powodu następnej metody skanera. check this

1

Zastosowanie scan.nextLine() ponieważ scan.next() przeczyta aż napotka spacje (zakładka, przestrzeń, enter) więc zakończyć się kiedy zobaczyć miejsca. Ty też możesz to odgadnąć, drukując s! odnieść sukces!