坚持比较字符串

时间:2013-03-12 02:36:49

标签: java

我必须创建一个应用程序,提示用户输入他或她的名字,包括标题。应用程序应显示“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);
        } 
    }
}

3 个答案:

答案 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 ......