2013-03-12 97 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 ......