2013-03-01 69 views
0

我寫了一個程序,要求輸入3個字符的字符串,可以是[a,b,v,^]的組合;檢查字符串是否允許使用其他值。 Java

這是我到目前爲止有:

do { 
    System.out.print("Enter a two variable logical expression, no spaces: "); // 'v' for or, '^' for and. 
    expression = type.nextLine(); 
} 
while ((expression.length() != 3) || !((expression.toUpperCase()).matches("[AB^V]"))); 

環路僅想繼續當字符串不是3個字符或字符串中的字符是不允許的。

我輸入了一個測試字符串:a^b,但循環只是繼續。

我該如何解決這個問題?

謝謝。

+0

你想要'^'嗎? – codeMan 2013-03-01 04:25:26

+0

是,^是允許的四個字符之一。 – 2013-03-01 04:41:40

回答

3

正確的正則表達式是[AB^V]+。實際上,原始表達式將只匹配長度爲1的串

((expression.toUpperCase()).matches("[AB^V]+")) 

^並不需要轉義的,因爲它是(在字符類即)[]之間。

編輯:其實當它被其他字符前面^應該進行轉義,如果它是在字符類(如在[\\^ABV]+)的開端,而不是。

+0

(+1)很好的答案。加入我的知識.. – asifsid88 2013-03-01 04:31:56

+0

非常感謝。這解決了我的問題。 – 2013-03-01 04:36:21

+0

1,這是更簡單版本'而((expression.toUpperCase()的匹配( 「[^ \\ ABV] {3}」))!);'或'甚至當((expression.matches(」! (我)[\\^ABV] {3}「)));''(我)'將正則表達式不區分大小寫:) – Pshemo 2013-03-01 04:38:17

相關問題