2016-04-07 2 views
0

Я работал над программой, предлагающей пользователю вводить строки, и предполагается, что они вводят строки «f name» или «m name». Затем он перечисляет имена мужчин и женщин, внесенных в отдельные списки. Однако вместо того, чтобы программа перечисляла только имена, она также перечисляет «f» и «m» перед каждым именем. Я попытался разместить метод split после того, как пользователь вводит пол и имя, но он не работает. Я уверен, что у меня что-то не хватает, но я не могу поместить его. Любая помощь будет оценена по достоинству. :)Как бы я разделил эту введенную строку? (Java)

package labs.lab5; 
import java.util.Scanner; 

public class NameProcessor { 
public static void main(String[] args) { 

    Scanner s = new Scanner(System.in); 

    UnboundedQueueInterface<String> males; 
    males = new ArrayUnbndQueue<>(10); 

    UnboundedQueueInterface<String> females; 
    females = new ArrayUnbndQueue<>(10);  

    String input; 

    do{ 
     System.out.print("Input a gender and name (x done to quit)>"); 
     input = s.nextLine(); 
     input.split(" "); 


     if(input.startsWith("m")) 
     { 
      males.enqueue(input); 
     } 
     else if(input.startsWith("f")) 
     { 
      females.enqueue(input); 
     } 
     else if(input.startsWith("x done")) 
     { 
      break; 
     } 
    } 
    while(!input.startsWith("x done")); 

    System.out.print("males: "); 
    while(!males.isEmpty()) 
    { 
     input = males.dequeue(); 
     System.out.println(input + " "); 
    } 

    System.out.print("females: "); 
    while(!females.isEmpty()) 
    { 
     input = females.dequeue(); 
     System.out.println(input + " "); 
     } 
    } 
} 
+0

Вы разделили бы их, как вы уже делали, используя 'input.split (" ");' но вам нужно присвоить возвращаемое значение чему-то. Строка неизменна, поэтому строка практически ничего не делает. – tnw

+1

вы назначаете имя после разбора try 'String name = input.split (" ") [1];' – silentprogrammer

ответ

1

Заменить males.enqueue(input); с males.enqueue(input.substring(2)); На самом деле вам нужно пропустить первые 2 символа: 'т' (или 'F') и ''.

1

Вы должны проверить нулевые значения и обрезать строку, но в противном случае будет работать простая модификация вашего кода.

do{ 
     System.out.print("Input a gender and name (x done to quit)>"); 
     input = s.nextLine(); 
     String[] tokens = input.split(" "); 


     if(input.startsWith("m")) 
     { 
      males.enqueue(tokens[1]); 
     } 
     else if(input.startsWith("f")) 
     { 
      females.enqueue(tokens[1]); 
     } 
     else if(input.startsWith("x done")) 
     { 
      break; 
     } 
    } 
Смежные вопросы