Java 当单词不';不要以“开始”;qu";?
如果Java 当单词不';不要以“开始”;qu";?,java,string,substring,Java,String,Substring,如果字符串单词参数不是以“qu”开头,我的方法应该返回false。我不知道如何使用比一个字母长的字符串 它当前给我一条错误消息:不可比较的类型:boolean和int public boolean isQU( String word ) { String QU = "qu"; String letters = word.substring ( 0,2 ); return ( ( QU ).equals( letters ) != -1 ); } 我缺
字符串单词
参数不是以“qu”开头,我的方法应该返回false
。我不知道如何使用比一个字母长的字符串
它当前给我一条错误消息:不可比较的类型:boolean和int
public boolean isQU( String word )
{
String QU = "qu";
String letters = word.substring ( 0,2 );
return ( ( QU ).equals( letters ) != -1 );
}
我缺少什么?我更喜欢使用(并检查null
)如下
或首先检查null
和至少两个类似的字符
if (word != null && word.length() > 1) {
return word.substring(0, 2).equals(QU);
}
return false;
首先,您为该方法指定的名称是错误的。你不是在测试它是否是QU,你是在测试它是否以QU开头 无论如何,Java中的字符串已经有了一个方法来检查它是否以某物开头。它被称为
starsWith
——多么令人惊讶啊。您可以像使用word.startsWith(“qu”)一样使用它。正如您所猜测的,它返回一个布尔值。错误“不可比较的类型:布尔值和整数”指的是这一行:
return ( ( QU ).equals( letters ) != -1 );
。。。因为equals总是返回一个布尔值。因此,您不能应用运算符=
将布尔值(等于
)与整数(-1
)进行比较
您的问题的直接解决方案将是移除comapration,并让这条线如下所示:
return ( ( QU ).equals( letters ));
这就是说,您可以省去实现isQU
方法的麻烦,转而委托字符串。startsWith
方法:
return word.startsWith("qu");
它比您的初始解决方案更安全,因为您的解决方案对于小于两个字符的字符串将失败(您没有验证是否可以安全调用
子字符串(0,2)
。equals
将返回true
或false
。没有一个数字可以与-1
返回(QU.equals(字母))代码>?第二个选项需要首先检查单词的长度,否则可能会出错。根据您对null
的理解,您可能还需要null
-检查。
return word.startsWith("qu");