有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java实践问题

前几天我贴了一些练习题,我一直在练习,现在又被卡住了

请首先,我可以问你不张贴完整的解决方案

问题就在这里

http://www.javabat.com/prob/p141494

读到

给定一个字符串和第二个“word”字符串,如果单词出现在字符串的前面,我们会说它与字符串匹配,除非它的第一个字符不需要完全匹配。在匹配时,返回字符串的前面,或者返回空字符串。因此,字符串“hippo”中的“hi”返回“hi”,而“xip”返回“hip”。单词的长度至少为1

startWord(“河马”,“你好”)→ “嗨” startWord(“河马”、“xip”)→ “臀部” startWord(“河马”、“我”)→ “h”

我被卡住了,问题的措辞对我没有帮助!这是我目前掌握的代码

public String startWord(String str, String word) 
{

 if (str.startsWith(word)){
     return str.substring(0, word.length());
 }

 if (str.substring(1, str.length()).equals(word.substring(1, word.length()))){
     return str.substring(0, word.length());
 }

 return "";
}

希望有人能在这里用一个或两个指针来帮助我,谢谢你的帮助


共 (6) 个答案

  1. # 1 楼答案

    尝试使用:

    if (str.length() > 0 && str.substring(1).startsWith(word.substring(1))) {
    

    对于有条件的,因为它更清楚。此外,tvanfosson和Darth Eru认为第一个条件与第一个字符完全匹配是无关的,这是正确的

  2. # 2 楼答案

    你的问题在于你的第二次比较(一般情况)。您正在将str的子串带到str的末尾,并将其与单词的子串进行比较。但是,如果str=“hippo”和word=“xip”,“ippo”!=“知识产权”

    另外需要注意的是,一旦您修复了第二个案例,您就不会真正需要第一个案例,因为第二个案例涵盖了第一个案例

  3. # 3 楼答案

    这是你的出发点

    import junit.framework.TestCase;
    
    public class HippoTest extends TestCase {
    
        public void testActualStart() throws Exception {
            assertEquals("hi", startWord("hippo", "hi"));
        }
    
        public void testSimilarStart() throws Exception {
            assertEquals("xip", startWord("hippo", "hip"));
            assertEquals("h", startWord("i", "hip"));
        }
    
        public void testWrongStart() throws Exception {
            assertEquals("", startWord("hippo", "hx"));
        }
    
        private String startWord(String string, String string2) {
            // TODO Auto-generated method stub
            return null;
        }
    }
    

    如果您一次通过一个测试用例,那么可能比一次解决整个问题更容易

  4. # 4 楼答案

    在忽略第一个字符的情况下,您只需要比较word.length() - 1个字符——以及字符串和单词的相同长度

    请注意,您确实不需要测试第一个字母完全匹配的情况,因为这是忽略第一个字母的情况的子集

  5. # 5 楼答案

    你的想法是对的。。。只需将字符1中的str子字符串与单词进行比较。从字符1到单词结尾的单词的子字符串的长度。 如果匹配,则将str的子字符串返回到单词。长度

  6. # 6 楼答案

    第二个IF语句中的问题是将单词与整个子字符串进行比较。您应该将其与(检查课程长度后)进行比较:

    str.substring(1,word.length()).equals(word.substring(1,word.length()))