-1

我有一个应该具有特征的汽车对象。该特征应该有要求:以两个大写字母开头,后跟1-9的数字,然后是0-9的4个数字。

公共无效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" || characteristic.charAt(i) > "Z"){" 行有问题

编译器说“操作符 < 未定义参数类型 char、String”

非常感谢任何帮助,谢谢。

4

7 回答 7

4

在 Java 中,可以将字符 ( char) 与字符进行比较,但不能将字符与. 进行比较StringcharAt返回一个字符,因此您必须将其结果与一个字符进行比较。

这些是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)

0and9应该改为'0'and '9'


注意:您的代码中还有另一个不相关的逻辑错误:

String characteristic = kb.nextLine();

progress = false; 

progress应该在这里设置true吗?

于 2013-06-29T08:47:43.197 回答
2

我当然会查看此页面上的其他答案。性格比较。但是,我可能会建议一种不同的方法:

以两个大写字母开头,后跟一个 1-9 的数字,后跟 4 个 0-9 的数字

并调查正则表达式。就像是:

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

可以满足上述要求。

于 2013-06-29T08:48:43.057 回答
1

对字符使用单引号,对字符串使用双引号。

 characteristic.charAt(3) < '1'

java中单引号和双引号的含义

对于您的情况,最适合的是正则表达式

于 2013-06-29T08:47:48.690 回答
0

用单引号替换双引号。

在将它们与字符进行比较时,您还必须在数字周围加上单引号,即使编译器没有抱怨。

于 2013-06-29T08:49:29.370 回答
0

像这样比较

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

首先,您可以使用 regexp 实现此目标:( [A-Z]{2}[1-9][0-9]{4} 阅读Pattern文章以了解如何使用它)。

如果您想在开始时这样做 - 使用单引号而不是带字符的双引号。例如"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 回答