我在这里阅读了以前的字符串比较问题,并且所有问题都使用与我正在使用的方法不同的方法。也许他们的方法要好得多,但是我想用我的方法来解决。我正在尝试编写一个比较两个字符串并输出按字母顺序排列的字符串的函数,在该函数中大写字母始终被认为在小写字母之前。 Java的compareTo方法将不起作用,因为它在按字母顺序排列时会忽略字母大小写。
我将for循环放入while循环中。当for循环检测到一个字符串的一个字母小于ASCII值的另一个字母时,它应该退出while循环,并且不应该完成for循环。但是,该程序应该返回“ cdf”,但是即使c在字母d之前也返回“ dbc”。为什么程序返回“ dbc”而不是“ cdf”?
public class Alphabet {
public static String min_compare(String str1, String str2) {
int a = 0;
while (a == 0) {
for (int i = 0; i < str1.length(); i++) {
int b = (int) str1.charAt(i);
int c = (int) str2.charAt(i);
if (b < c) {
a = 1;
} else if (b > c) {
a = 2;
} else if ((b == c) && (i == (str1.length() - 1))) {
a = 1;
} else {
a = 0;
}
}
}
if (a == 2) {
return str2;
} else {
return str1;
}
}
public static void main(String[] args) {
String check = min_compare("dbc", "cdf");
System.out.println(check);
}
}
最佳答案
不需要while
循环;如果a
循环结束后for
为0,则再次运行该for
循环不会导致不同的结果,从而导致无限循环。
您为a
的每个字符设置str1
;因此,a
的最终值将仅由for
循环的最后一次迭代确定,而忽略之前的操作。
关于java - 异常字符串比较Java,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38537161/