Java 制作我自己的s1.compareTo(s2)方法,而不使用其他方法
我应该自己用比较法。这是说明书 其中s1和s2是字符串,b是整数类型,如果两个字符串相等,b将存储0;如果s1小于s2,b将存储负值;如果s1大于s2,b将存储正值。 我做的程序不起作用,我也不知道为什么,有一件事是,如果数组相等,程序就会失败,即使它们不相等,程序也不会起作用。 谢谢你的帮助Java 制作我自己的s1.compareTo(s2)方法,而不使用其他方法,java,methods,compareto,Java,Methods,Compareto,我应该自己用比较法。这是说明书 其中s1和s2是字符串,b是整数类型,如果两个字符串相等,b将存储0;如果s1小于s2,b将存储负值;如果s1大于s2,b将存储正值。 我做的程序不起作用,我也不知道为什么,有一件事是,如果数组相等,程序就会失败,即使它们不相等,程序也不会起作用。 谢谢你的帮助 public class CompareCharMethod { public static void main(String[] args) { // TODO Aut
public class CompareCharMethod {
public static void main(String[] args) {
// TODO Auto-generated method stub
char[] s1 = new char[] {'a', 'p', 'p', 'l', 'e'};
char[] s2 = new char[] {'o', 'r', 'a', 'n', 'g', 'e'};
int answer = CompareTo(s1, s2);
System.out.println(answer);
}
public static int CompareTo(char[] s1, char[]s2)
{
if (s1==s2) {
return 0;
} else {
int i=0;
do {
if (s1[i] <s2[i]) {
return -1;
} else if (s1[i] >s2[i]) {
return 1;
} else {
i++;
}
} while (s1[i]==s2[i]);
}
return 999;
}
}
您可以尝试以下方法:
public static void main(String[] args) {
String s1 = "apple";
String s2 = "orange";
int answer = myCompareTo(s1.toCharArray(), s2.toCharArray());
System.out.println(answer);
}
public static int myCompareTo(char[] s1, char[]s2) {
int len1 = s1.length;
int len2 = s2.length;
int lim = Math.min(len1, len2);
char v1[] = s1;
char v2[] = s2;
int k = 0;
while (k < lim) {
char c1 = v1[k];
char c2 = v2[k];
if (c1 != c2) {
return c1 - c2;
}
k++;
}
return len1 - len2;
}
这应该是你要找的,我把它解释为字典顺序
public static int CompareTo(char[] s1, char[]s2)
{
if (s1==s2)
return 0;
int n = s1.length>=s2.length ? s2.length : s1.length;
for(int i=0;i<n;i++){
if(s1[i]<s2[i])
return -1;
else if(s1[i]>s2[i])
return 1;
}
if(s1.length==s2.length)
return 0;
return s1.length>s2.length ? 1 : -1;
}
您似乎根本没有考虑字符串的长度。您还应该检查这一点,以确保索引不会超过字符串的结尾。此外,除非数组是完全相同的对象,否则方法永远不会返回0,即字符串相等。请注意,s1==s2比较的是数组引用,而不是实际内容。其次,您提到需要检查字符串是否相等。平等到底意味着什么?每一个的实际内容或长度?当你说它不起作用时,你是什么意思?请澄清一点,以便有人有足够的信息来帮助你。在尝试提出更多问题之前,请阅读。“不工作”对任何阅读你的问题的人来说都毫无用处。这意味着有些东西不起作用,或者你不会在这里提问。。使用step调试器可以非常快速轻松地回答您的问题。在使用StackOverflow之前,应始终尝试使用step调试器解决问题。不起作用,请帮助我不可接受。请在尝试回答更多问题之前阅读。请在尝试回答更多问题之前阅读。