0

我必须创建一个应用程序来提示用户输入他或她的名字,包括标题。如果字符串以Mr.开头,则应用程序应显示“Hello,sir” ,如果字符串以Ms.,Mrs. 或 Miss开头,则显示“Hello,ma'am”,否则应显示“Hello , name ”,其中name是用户的姓名。

到目前为止,这就是我所拥有的,当用户输入 Mrs 时,应用程序会阻塞,因为它首先找到Mr s,我无法弄清楚我可以做些什么来让它工作。让我知道,先谢谢大家的回答!初学者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);
        } 
    }
}
4

3 回答 3

1
String.split("\\.");

如果您的字符串有一个点,它将被拆分。然后你可以比较“夫人”和“先生”。

或者你可以用空格分割(如果有的话,删除字符串末尾的点)

于 2013-03-12T02:41:58.553 回答
0

如果其他情况,请尝试交换“先生”和“夫人”

if (name.startsWith(mrs)) {
    System.out.println("Hello,ma'am");
} else if (name.startsWith(mr)) {
    System.out.println("Hello,sir");
}else ......
于 2013-03-12T02:46:39.913 回答
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

于 2013-03-12T02:40:52.207 回答