-1

特性を持つはずの車のオブジェクトがあります。特性には次の要件があるはずです: 2 つの大文字で始まり、その後に 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" || character.charAt(i) > "Z"){」という行で問題が発生しています。

コンパイラは、「演算子 < は、引数の型 char、String に対して未定義です」と言っています。

どんな助けでも大歓迎です、ありがとう。

4

7 に答える 7

4

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か?

于 2013-06-29T08:47:43.197 に答える
1

文字には一重引用符、文字列には二重引用符を使用します。

 characteristic.charAt(3) < '1'

Javaの一重引用符と二重引用符には意味があります

そして、あなたの状況に最適なのは正規表現です

于 2013-06-29T08:47:48.690 に答える
0

こんな感じで比較

characteristic.charAt(3) < '1'
于 2013-06-29T08:50:29.567 に答える
0

まず、正規表現を使用してこの目標を達成できます [A-Z]{2}[1-9][0-9]{4} (使用方法については、パターンの記事を参照してください)。

開始したとおりにしたい場合は、文字の二重引用符の代わりに単一引用符を使用してください。例"a"-> 'a'.

于 2013-06-29T08:51:28.363 に答える
0

char単一引用符を使用して値を割り当てたい場合。String二重引用符を使用する場合

 char myChar='a';

 String myString="a";

それで

 characteristic.charAt(3) < "1"  should change as characteristic.charAt(3) < '1'
于 2013-06-29T08:52:14.490 に答える