2015-12-23 6 views
-1

Я пытаюсь задать вопрос программирования на hackerrank.com и использует язык Java.java - Как разбить строку на символ «/»?

Часть вопроса потребовала от меня разбить строку символом /.

Я встречал проблемы с этим в Java.

Учитывая вход:

cu/a/ca ha/ri i/tu san/gat se/juk 

Мой код (Java):

Scanner input = new Scanner(System.in); 
    String source = input.next(); 
    String[] inputchar = source.split("/"); 
for (int i = 0; i < inputchar.length; i++){ 
    System.out.print(inputchar[i] + "\n"); 
} 

Результат:

cu 
a 
ca 

Но я ожидал следующий вывод:

cu 
a 
ca ha 
ri i 
tu san 
gat se 
juk 

Однако, когда я попытался использовать следующий код C#, он дал мне правильный результат.

String source = Console.ReadLine(); 
    String[] slashchar = source.Split('/'); 
    for (int k = 0; k < slashchar.Length; k++) 
    { 
     Console.WriteLine(slashchar[k]); 
    } 

Я заметил, что строка с интервалом не может быть разделена должным образом с помощью кода Java.

Есть ли ошибки в моем Java-коде выше?

+5

Как вы думаете, 'input.next()' делает? Как вы думаете, 'Console.ReadLine()' делает? Почему ты так думаешь? –

ответ

3

Ваш сканер делает некоторые tokenizing - на просторах. Таким образом, вы не прочитали целую строку с

input.next(); 

Вы читаете только до первого пробела.

Заменить

input.nextLine(); 

И попробуйте еще раз.

3

Изменить на String source = input.nextLine(); вместо String source = input.next(); Потому что input.next() возвращает строку до места, input.nextLine возвращает строку до новой строки.

2

С Java попробуйте использовать nextLine() так:

Scanner input = new Scanner(System.in); 
    String source = input.nextLine(); 
    String[] inputchar = source.split("/"); 
for (int i = 0; i < inputchar.length; i++){ 
    System.out.print(inputchar[i] + "\n"); 
} 
Смежные вопросы