比较并检查两个字符串中的最后4个字符是否相同?

时间:2014-05-27 20:27:07

标签: java substring

今天我参加了我的Java考试,我希望自己已经做得足够通过了。

虽然我的Java经验正在增长,但我知道我尝试的其中一个问题是错误的,我正在寻找澄清这个失败的问题,也请找一个解决方案。

问题是:

  

创建一个boolean类型的方法,如果String a和String b的最后四个字符子串相等,它将返回true。

我的尝试是这样的:

public static boolean test(String a, String b){
    //Lets assume that the Strings are equal
    if(a.substring(-4).equals b.substring(-4)){
        return true;
    }
}

我知道这是错的,但在考试条件下,你的思想往往是空白。 考试是我们试图熟悉Java语法的基础考试。 考试也是基于纸张的,没有任何PC的访问权。

所以,请原谅我的代码中的任何错误,因为我还在学习。

4 个答案:

答案 0 :(得分:1)

负数不是调用子字符串的有效索引,我会这样做,

public static boolean test(String a, String b) {
    if (a.length() > 4) {
        a = a.substring(a.length() - 4);
        if (b.length() > 4) {
            b = b.substring(b.length() - 4);
        }
    }
    return a.equals(b);
}

public static void main(String[] args) {
    System.out.println(test("aTest", "bTest"));
    System.out.println(test("aTest1", "bTest"));
}

输出

true
false

答案 1 :(得分:1)

在java子串中不理解"减去"语义。你必须做类似的事情:

public static boolean test(String a, String b) {
    String endA = a.substring(Math.max(0, a.length() - 4));
    String endB = b.substring(Math.max(0, b.length() - 4));
    return endA.equals(endB);
}

答案 2 :(得分:1)

你可以通过说

来获取java中最后4个字符串
stringName.substring(stringName.length() - 4);

答案 3 :(得分:1)

好的,substring方法需要(int startIndex[, int endIndex])

那么你的代码是做什么的?

检查从a-4的{​​{1}}子字符串是否等于a.length的子字符串,从b开始到{{ 1}}。

如您所知,字符串索引从-4开始,因此b.length会向您发出一个异常,告诉您正在尝试将负索引用作0

由于您需要检查最后四个字符,您可以使用-4(它将返回给定字符串的长度)作为起始索引,因此startIndex将返回给您最后四个字符字符串的字符。

a.length()

这里有一个问题,如果长度小于4怎么办?它仍然会尝试访问负面索引。

我不会重复@Elliott Frisch的回答,因为已经给你这个问题的答案了。