2017-01-18 54 views
0

我想我的程序驗證使用兩個單字符是由用戶輸入,它必須是A或M.驗證單個字符JAVA

之間

這裏是我的代碼我迄今:

static char getCustomerType() { 
    System.out.println("Please enter the term for the Policy the client would like"); 
    System.out.println("A for Annual or M for Monthly. Annual provides the user with a 10% discount"); 

    String s = inputs.next(); 

    while (s != 'A' && s != 'M') { 
     System.out.println("Incorrect, please try again"); 
     s = inputs.next(); 
    } 
} 

的Netbeans然而,當我已經把它while語句之前使用不喜歡這個陳述inputs.next是從未使用過? 它也不喜歡生成不兼容的字符串類型引用布爾型爲字符串的while語句。

我認爲這是因爲我已經聲明s爲一個字符串?

+2

一個'String'不是'char'和'!='不同於'! ='... – fvu

+0

[如何比較Java中的字符串?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) – moe

+0

更改爲字符串並將其更改爲!=,拋出錯誤即使將方法從Char更改爲String並將「s」更改爲「letter」,String仍然無法轉換爲布爾值,並仍然針對char操作數類型拋出錯誤 – FUBAR

回答

1

爲什麼不寫

while (("A".equalsIgnoreCase(s) || "M".equalsIgnoreCase(s)) == false) 
1

可以從用戶使用以下代碼假設輸入具有單一characeter輸入是掃描儀的對象:( 「」)

炭C = inputs.next。的charAt(0);

,然後你可以用比較吧!=或.equals()或.equalsIgnoreCase()

+0

Yup,inputs is我在被調用的代碼的主類中聲明的scanner對象在整個過程中都有幾種方法。 我假設通過使用這個,然後我可以設置方法爲字符類型而不是字符串? – FUBAR

+0

你在說getCustomerType()方法嗎? 我的答案是否解決了您的問題,如果是的話,請接受它。謝謝 – Arvind

+0

是的,談論那個;掙扎了一下讓它按照你的方式工作 System.out.println(「請輸入客戶想要的策略條款」); System.out.println(「A爲Annual或M爲Monthly。Annual爲用戶提供10%的折扣」); char c = inputs.next(「。」)。charAt(0); (「A」.equalsIgnoreCase(c)||「M」.equalsIgnoreCase(c))== false)System.out.println(「不正確,請再試一次」); c = inputs.next; 看不出我的回報聲明,它不喜歡.next在哪裏我結束了 – FUBAR