2013-03-12 95 views
0

我必须创建一个应用程序,提示用户输入他或她的名字,包括标题。如果字符串以女士,女士,或小姐,和“你好,名称”开头,“012,你好,女士”否则其中名称是用户名。卡在比较字符串

这就是我到目前为止的应用程序呛,当用户键入夫人,因为它首先找到先生,我很难找出我能做些什么来让它工作。让我知道,谢谢你们所有的答案!初学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

你可以更改比较顺序:在检查“Mr”之前检查“Mrs”。 – 2013-03-12 02:38:35

回答

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)。由于mrsmr开始,你需要前mr

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

改变比较为了比较mrs如果字符串有一个点,它会分裂。然后你可以比较“夫人”和“先生”

或者你可以用空格分开(并删除字符串结尾的点,如果有一个)

0

尝试交换“先生”和“太太”如果别人

if (name.startsWith(mrs)) { 
    System.out.println("Hello,ma'am"); 
} else if (name.startsWith(mr)) { 
    System.out.println("Hello,sir"); 
}else ......