簡體   English   中英

Java-有多個答案的charAt

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM