今天我参加了我的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的访问权。
所以,请原谅我的代码中的任何错误,因为我还在学习。
答案 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的回答,因为已经给你这个问题的答案了。