2016-10-03 3 views
0
Scanner input = new Scanner(System.in); 
Scanner input2 = new Scanner(System.in); 

System.out.println("Please enter a string: "); 
String a = input.next(); 

System.out.println("Please enter another string: "); 
String b = input2.next(); 

int s1 = a.length(); 
int s2 = b.length(); 
int i; 

if(a.equalsIgnoreCase(b)){ 
    System.out.println(a.substring(i = 0, i + s2)); 
} 

Я пытаюсь сравнить 2 строки, которые вводит пользователь. Сравнение строк работает нормально, однако, когда я ввожу строку с пробелами вроде «Мне нравятся собаки», она подсчитывает длину строки как 1 вместо 11 из-за пробела между «i» и «like». Почему программа не подсчитывает пробелы или оставшиеся символы после первого пробела?Java: в том числе пробелы при поиске длины строки

+0

использование 'input.nextLine();' ' –

+0

input.next()' прибудет это следующий полный маркер, отделенный от пространство. – Li357

ответ

1

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

nextLine() метод продвигает этот сканер мимо текущей строки и возвращает введенный вход.

если вы не можете использовать сильфон код java.io пакета

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
System.out.println("Enter a string"); 
String s = br.readLine(); 
System.out.println(s.length()); 
0

При использовании input.next() пробел считается разделителем, который отделяет токены, принятые сканером. Поэтому, когда сканер читает в вашем предложении «я люблю собак», он обнаруживает 3 отдельных токена, разделенных пробелами. Вы можете либо указать разделитель, используя метод useDelimiter класса сканера, такие как

scanner scan = new Scanner(input).useDelimiter(insert parameters here); 

или просто использовать метод input.nextLine(), который читает во всей строке, принятой лексемы. Метод

String b = input.nextLine(); 
Смежные вопросы