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");