java - 如何编写该程序以包含字符串的最后一个字母?

标签 java

public static void main(String[] args)
    {
        String s = "Hello There";
        String p = "eo";
        int reps = 0;

        for (int i=0; i<s.length()-p.length(); i++) //checks all characters in the length of s.length minus the length it's searching for
        {

            for (int j=0; j<p.length(); j++)
            {
                if (s.charAt(i+j) == p.charAt(j)) 
                    reps++; 
            }


        }

        System.out.print(reps);

    }

它打印 3 来表示 e 和 o 出现的次数,而它应该打印 4。我认为这是因为它在检查“re”后结束搜索,这意味着它检查了“r”为“e”,“e”代表“o​​”。这通常可以工作,但搜索到此结束,如果我尝试修复它,就会出现超出范围的错误。

最佳答案

您没有循环整个第一个字符串。

for (int i=0; i<s.length()-p.length(); i++)

应该是

for (int i=0; i<s.length(); i++)

..

String s = "Hello There";  //length is 11
String p = "eo"; // length is 2

如果你循环第一个字符串的所有字符,那没问题,但是你循环 s.length-p.length,那么你正在读取前 11-2 个字符(其中一个找到的是最后一个,在位置长度-1)

if (s.charAt(i+j) == p.charAt(j)) 

应该是这样

if (s.charAt(i) == p.charAt(j)) 

您想要比较 s 中 p 的每个字符

如果你正在比较“H”和“eo”,你想将“H”与“e”比较,然后与“o”比较,如果你使用i+j,它将把“H”的指针移动到“e”等等。

关于java - 如何编写该程序以包含字符串的最后一个字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19106345/

相关文章:

java - 使用 jnetpcap 删除重复的数据包

java - 使用数据库创建企业桌面应用程序的最佳实践

java - 为什么我的 System.nanoTime() 坏了?

Java 文件对话框另存为

java - Android:使用notifyDataSetChanged更新listview

java - Vaadin 8 使用 Vaadin Designer 时绑定(bind)到 Pojo

java - 错误 : invalid password(Not CSK password) in Building mobile app for blackberry using phonegap

java - 本地化异常(在 Struts2 应用程序内)

java - 如何从 Java 生成大型(1GB)示例 gc 日志文件

java - 确定 Java Eclipse 中方法调用的顺序