Java 仅使用字符实现子字符串检查方法

Java 仅使用字符实现子字符串检查方法,java,string,substring,charat,Java,String,Substring,Charat,我正在尝试只使用String类的charAt方法实现一个substring方法 当我在搜索词“hat”中包含最后一个字符时,就会出现问题。否则一切都会正常工作。 此外,当搜索例如“hat”时,我看到charAt(j)跟踪打印所有“h”,索引为0,表示所有字符和真实出现。 以下是完整的代码: public class SubString { public static void main(String[] args) { String line = "The ca

我正在尝试只使用String类的charAt方法实现一个substring方法
当我在搜索词“hat”中包含最后一个字符时,就会出现问题。否则一切都会正常工作。
此外,当搜索例如“hat”时,我看到charAt(j)跟踪打印所有“h”,索引为0,表示所有字符和真实出现。
以下是完整的代码:

    public class SubString {
    public static void main(String[] args) {

        String line = "The cat in the hat.";
        String item = "hat.";

        System.out.println("'" + item + "' is substring of '" + line + "' : " + isSubString(item, line));

    }

    private static boolean isSubString(String item, String line) {
        int i = 0;
        int j = 0;
        int count = 0;

        for (i = 0; i < line.length() - item.length(); i++) {

            for (j = 0; j < item.length(); j++) {

                if (item.charAt(j) != line.charAt(i + j)) {
                    break;
                }

                if (item.charAt(j) == line.charAt(i + j)) {
                    System.out.println(item.charAt(j) + ":" + j + " - " + line.charAt(i + j) + ":" + (i + j));
                    count++;
                }

                if (count == item.length())
                    return true;

            }

        }
        return false;
    }
}  
公共类子字符串{
公共静态void main(字符串[]args){
String line=“帽子里的猫。”;
String item=“帽子。”;
System.out.println(“““+item+””是“+line+”的子字符串:“+isSubString(item,line));
}
私有静态布尔IsubString(字符串项,字符串行){
int i=0;
int j=0;
整数计数=0;
对于(i=0;i
搜索“hat”时再次出现问题。<==带点的最后一个单词。
“hat”虽然返回true,但trace显示了错误的字符(仅比较了h),索引始终为0。

您应该试试

line.contains(item)

第一个循环省略字符串的最后一个字符。i、 e,line.length()-item.length()

请将其替换为以下循环条件

for (i = 0; i < line.length() - item.length() + 1; i++) {            
for(i=0;i
您能解释一下这对OP有什么帮助吗?