我正在尝试编写一个程序来检查字符串的前两个字母是否相同。例如,frontAgain("编辑");应该回归真实。但是,以下程序仅适用于2个char字符串,例如" ed"。我认为这可能是一个对象比较问题,所以我尝试使用如下行:
splitstring[0].equals(splitstring[length - 2])
splitstring[0] == splitstring[length - 2]
splitstring[0].equalsIgnoreCase(splitstring[length - 2])
但是我的程序再一次只适用于" ed"等字符串。有任何想法吗?这是我的代码:
public class Mainjazz {
public static boolean frontAgain(String str){
int length = str.length(); //gets length of string for later use in if statement
String[] splitstring = str.split(""); //splits string into an array
if((splitstring[0].equals(splitstring[length - 2])) && (splitstring[1].equals(splitstring[length - 1]))){ //checks if first two letters = last two
return true;
}else{
return false;
}
}
public static void main(String[] args) {
System.out.println(frontAgain("edited"));
}
}
编辑:问题解决了,谢谢:)
答案 0 :(得分:2)
根据您的算法(以及您发布的代码),我会像这样使用String.toCharArray()
,
public static boolean frontAgain(String str) {
if (str != null && str.length() > 1) {
char[] chars = str.toCharArray();
int len = chars.length;
return chars[0] == chars[len - 2] && chars[1] == chars[len - 1];
}
return false;
}
答案 1 :(得分:0)
如果splitstring
等于"abcdefgab"
,那么
splitstring[0].equals(splitstring[length - 2])
基本上等同于
'a'.equals('a')
如果你想比较两个字符,你需要
int len = splitstring.length;
splitstring.substring(0, 2).equals(splitstring.substring(len - 2, len);
在尝试比较之前,建议确保字符串是(非空)至少两个(可能是四个)字符。
祝你好运。答案 2 :(得分:0)
public static boolean frontAgain(String str){
String str1 = str.substring(0,2);
String str2 = str.substring(str.length() - 2);
if (str1.equals(str2)) {
return true;
}
else
return false;
}
通过获取字符串的前2个字符和后2个字符然后将它们进行比较,这样做会更简单。
答案 3 :(得分:0)
希望这会有所帮助:
public boolean areTheSame(String mystring) {
//if you want to compare ignoring the upper cases
//mystring = mystring.toLowerCase();
if(mystring.substring(0, 1).equals(
mystring.substring(mystring.length()-2,
mystring.length()-1))){
return true;
}
else return false;
}