2013-03-12 4 views
0

Мне нужно создать приложение, которое запрашивает у пользователя его имя, включая заголовок. Приложение должно отображать «Привет, сэр», если строка содержит г-н, «Hello, ma'am», если строка начинается с Г-жа, миссис или мисс, и «Hello, имя" в противном случае имя является именем пользователя.Застрял при сравнении строк

Это то, что у меня есть до сих пор, приложение дросселируется, когда пользователь вводит в миссис, потому что сначала находит г-н, и мне трудно понять, что я могу сделать, чтобы заставить его работать. Дайте мне знать, спасибо вам за все ваши ответы! Начинающий 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

Вы может изменить порядок ваших сравнений: проверьте «Mrs» перед тем, как вы проверите «Mr». –

ответ

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

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

Если строка имеет точку, оно будет расщепляется. Затем вы можете сравнить с «Mrs» и «Mr.»,

Или вы можете разделить с пробелом (и удалить точку конца строки, если есть один)

0

Попробовать поменять «Мистер» и «MRS», если еще

if (name.startsWith(mrs)) { 
    System.out.println("Hello,ma'am"); 
} else if (name.startsWith(mr)) { 
    System.out.println("Hello,sir"); 
}else ...... 
Смежные вопросы