我该如何分割这个输入的字符串? (JAVA)

时间:2016-04-07 19:46:10

标签: java string queue

我一直致力于提示用户输入字符串的程序,并假设他们只输入字符串“f name”或“m name”。然后列出在单独的列表中输入的男性和女性的姓名。但是,它不是仅列出名称的程序,而是列出每个名称前面的“f”和“m”。我尝试在用户输入性别和名称后放置拆分方法,但它不起作用。我确定我错过了一些东西,但我似乎无法放置它。任何帮助,将不胜感激。 :)

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 + " ");
        }
    }
}

2 个答案:

答案 0 :(得分:1)

males.enqueue(input);替换为males.enqueue(input.substring(2)); 实际上你需要跳过前2个符号:'m'(或'f')和''。

答案 1 :(得分: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;
        }
    }