2016-01-31 1 views
1

У меня есть вопрос! Я использую StringTokenizer, но я не понимаю, как я могу использовать «пространство» в качестве токена! это пример моего метода:StringTokenizer и токен 'space'

import java.util.*; 

public class miaProva{ 
public static void main(String[] args) { 
    Scanner sc=new Scanner(System.in); 
    System.out.println("Write phrase"); 
    String s=sc.next(); 
    StringTokenizer st=new StringTokenizer(s, " ,."); 
    StringBuilder sb=new StringBuilder(); 
    sb.append('>'); 
    while(st.hasMoreTokens()){ 
     sb.append(st.nextToken()); 
    } 
    sb.append('<'); 
    System.out.println(sb); 



} 
} 

но когда он находит «пространство» прерывает выполнение метода.

INPUT: 1) hi,how,are.you 2) hi,how are you

ВЫВОД: 1) >hihowareyou< 2) >hihow<

спасибо

ответ

0

Вы пробовали раздвоение метод в классе String?

В вашем примере, когда вы делаете sc.next(), он дает вам текст, разделенный пробелом. Итак, когда вы печатаете «Привет, как вы», sc.next() возвращает только «привет, как» Не проблема с StringTokenizer, используйте sc.nextLine() вместо sc.next(). Это должно дать вам результат, который вы ожидаете.

+0

нет, но я хочу понять, как это сделать с помощью StringTokenizer! Мой профессор использует StringTokenizer так же, как мой – DarkPassenger

+0

Используйте sc.nextLine() вместо sc.next() – Sathiesh

+0

Большое вам спасибо. Я не знал этого, я думал, что это одно и то же. Теперь я буду углубленно изучать это. большое спасибо :) – DarkPassenger

0

scanner использует пробел как разделитель по умолчанию. Поэтому, когда вы вызываете sc.next(), он возвращает только первую часть ввода перед пробелом. Вы можете сказать ему, чтобы включить всю строку:

Scanner sc = new Scanner(System.in); 
    sc.useDelimiter("\r\n"); 

где «\ г \ п» соответствует новой строки на ОС Windows.

Редактировать: Лучше использовать метод lineSeparator, так что он будет работать в любой операционной системе.

Scanner sc = new Scanner(System.in); 
    sc.useDelimiter(System.lineSeparator()); 

редактировать 2: Или еще лучше (прочитав @ ответ Sathiesh в), используйте sc.nextLine().

Смежные вопросы