我一直致力于提示用户输入字符串的程序,并假设他们只输入字符串“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 + " ");
}
}
}
答案 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;
}
}