[英]Java - charAt with multiple answers
我的代碼遇到了一些麻煩,我正在嘗試測試char中的位置是否等於整數。 我設置的方式是這樣的:
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == '[1234567890]') {
System.out.println(str);
}
}
但是,當我嘗試編譯時,出現錯誤“未封閉的字符文字”。 有誰知道我為什么會出錯,或者可以解釋一種更簡單的方法來做到這一點?
嘗試:
if ( Character.isDigit(str.charAt(i)) )
您必須檢查每個字符是否都是數字,以檢查您的字符串是否包含和整數。
'[1234567890]'
不是char
。 char
是單個字符。 這就是為什么您的代碼無法編譯的原因。
您似乎正在嘗試在字符文字中使用正則表達式。 那行不通。 如果要使用正則表達式,可以編寫:
if(str.substring(i, i+1).matches("[1234567890]") {
但是寫起來更好/更簡單/更快/更清晰:
if(Character.isDigit(str.charAt(i))) {
另一方面,即使您進行了此更改,如果代碼包含幾位數字,它也會多次打印str
。 那真的是你想要的嗎? 我想知道您是否想要更多這樣的東西:
if(str.matches("\d+"))
System.out.println(str);
如果所有字符均為數字,則將只打印一次str
。
您的代碼無法編譯,因為Java字符'
(單引號)用於標記一個字符。 為了定義字符串,您應該使用雙引號"
。
就您的情況而言,我認為您想檢查字符串是否僅包含數字,並與嘗試使用不正確的正則表達式語法混淆。
您可以重新編寫if語句,如下所示:
char c = str.charAt(i); if(c>= '0' && c <= 9) {
或使用模式匹配,例如Pattern.compile("\\\\d+").matcher(str).matches()
在這種情況下,您甚至不需要實現任何循環。
我認為您正在嘗試編寫以下簡單內容:
for(int i = 0; i < str.length(); i++) {
//check str.charAt(i) is one of the chars in 1234567890
if("1234567890".indexOf(str.charAt(i))>=0) {
System.out.println(str.charAt(i));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.