我必须创建一个应用程序,提示用户输入他或她的名字,包括标题。应用程序应显示“Hello,sir”如果字符串以先生,“Hello,ma'am”为主,如果字符串以女士,女士或小姐和“Hello, name ”,否则 name 是用户的名字。
这就是我到目前为止,当用户输入Mrs时,应用程序会窒息,因为它首先找到 Mr ,而我无法弄清楚我能做些什么来获取它工作。让我知道,先谢谢大家的答案!初学者Java请保持简单!
package chapter6java;
import java.util.Scanner;
import java.lang.String;
public class FormalGreeting {
public static void main (String [] args) {
String name, mr = "Mr", mrs = "Mrs", ms = "Ms", miss = "Miss";
Scanner input = new Scanner(System.in);
System.out.print("Enter your name including title (ie. Mr, Mrs): ");
name = input.nextLine();
if (name.startsWith(mr)) {
System.out.println("Hello,sir");
} else if (name.startsWith(mrs)) {
System.out.println("Hello,ma'am");
} else if (name.startsWith(ms)) {
System.out.println("Hello,ma'am");
} else if (name.startsWith(miss)) {
System.out.println("Hello,ma'am");
} else {
System.out.println("Hello," +name);
}
}
}
答案 0 :(得分:1)
String.split("\\.");
如果您的字符串有一个点,它将被拆分。然后你可以比较“太太”和“先生”
或者你可以用空格分割(如果有的话,删除字符串末尾的点)
答案 1 :(得分:0)
将您的比较更改为mrs
的第一次比较:
if (name.startsWith(mrs)) {
System.out.println("Hello,ma'am");
}else if (name.startsWith(ms)) {
System.out.println("Hello,ma'am");
}else if (name.startsWith(miss)) {
System.out.println("Hello,ma'am");
}else if (name.startsWith(mr)) {
System.out.println("Hello,sir");
}else{
System.out.println("Hello," +name);
}
说明:
在您的解决方案中,程序流将进入第一个if
分支(即名称以mr
开头的分支)。由于mrs
也以mr
开头,因此您需要更改比较顺序以比较mrs
之前的mr
答案 2 :(得分:0)
尝试交换“mr”和“mrs”if else
if (name.startsWith(mrs)) {
System.out.println("Hello,ma'am");
} else if (name.startsWith(mr)) {
System.out.println("Hello,sir");
}else ......