簡體   English   中英

(Java)myString.charAt(i)>“ 1”或myString.charAt(i)<“ A”的問題

[英](Java ) problems with myString.charAt(i) > “1” or myString.charAt(i) < “A”

我有一個應該具有特征的汽車對象。 該特性應該具有要求:以兩個大寫字母開頭,后跟1-9之間的數字,然后是0-9之間的4個數字。

public void writeCharacteristic(){

System.out.println("write down the characteristic for the car."); String characteristic = kb.nextLine(); progress = false; if (characteristic.length() != 7){ System.out.println("The string is not 7 letter/numbers long"); progress = false; } for(int i = 0; i < 2; ++i){ if (characteristic.charAt(i) < "A" || characteristic.charAt(i) > "Z"){ System.out.println(" character number " + i + " is invalid"); progress = false; } } if (characteristic.charAt(3) < "1" || characteristic.charAt(3) > "9") progress = false; for (int j = 3; j < 7; ++j){ if (characteristic.charAt(j) < 0 || characteristic.charAt(j) > 9) progress =false; } if (progress == false){ System.out.println("characteristic will have the value null."); characteristic = null; } if (progress == true) car.setCharacteristic(characteristic);

}

我在“ if(characteristic.charAt(i)<“ A” ||特征.charAt(i)>“ Z”){“

編譯器說“對於參數類型char,String,未定義運算符<”

感謝您的任何幫助。

在Java中,您可以將字符( char )與字符進行比較,但不能將字符與String進行比較。 charAt返回一個字符,因此您必須將其結果與一個字符進行比較。

這些是String

"A" "Z" "1" "9"

這些是角色

'A' 'Z' '1' '9'

您可以將字符與整數( int )進行比較,但結果可能不是您想要的。 因此,在下面的代碼中:

for (int j = 3; j < 7; ++j){
    if (characteristic.charAt(j) < 0 || characteristic.charAt(j) > 9)

09應該更改為'0''9'


注意:您的代碼中還有另一個不相關的邏輯錯誤:

String characteristic = kb.nextLine();

progress = false; 

這里不應該將progress設置為true嗎?

我當然會在此頁面上查看其他答案。 字符比較。 但是,我也許會建議使用另一種方法:

以兩個大寫字母開頭,后跟1-9之間的數字,然后是0-9之間的4個數字

並研究正則表達式 就像是:

[A-Z]{2}[1-9][0-9]{4}

將滿足上述要求。

字符使用單引號,字符串使用雙引號。

 characteristic.charAt(3) < '1'

在Java中有單引號和雙引號的含義

對於您的情況,最適合的是正則表達式

用雙引號替換雙引號。

在將數字與char進行比較時,即使編譯器沒有抱怨,也必須在數字前后加上單引號。

像這樣比較

characteristic.charAt(3) < '1'

首先,您可以使用regexp實現此目標: [AZ]{2}[1-9][0-9]{4} (閱讀模式文章以了解如何使用它)。

如果您想一開始就做-使用單引號而不是帶字符的雙引號。 例如"a" -> 'a'

如果要為char賦值,請使用單引號。 如果是String使用雙引號

 char myChar='a';

 String myString="a";

所以

 characteristic.charAt(3) < "1"  should change as characteristic.charAt(3) < '1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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