我在这里阅读了之前的字符串比较问题,它们都使用了与我正在使用的不同的方法。也许他们的方法要好得多,但我想用我的方法来实现这一点。我正在尝试编写一个函数来比较两个字符串并输出按字母顺序排列在前的字符串,其中大写字母始终被认为位于小写字母之前。 Java 的compareTo 方法不起作用,因为它在按字母顺序排列时忽略字母大小写。
我将 for 循环放入 while 循环中。当 for 循环检测到字符串的一个字母在 ASCII 值方面小于另一个字母时,它应该退出 while 循环并且不完成 for 循环,这是应该发生的。但是,程序应该返回“cdf”,但它返回“dbc”,即使 c 在字母表中位于 d 之前。为什么程序返回“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
循环;如果for
循环结束后a
为 0,则再次运行该for
循环不会导致不同的结果,从而导致无限循环.您为
str1
的每个字符设置了a
;因此,a
的最终值仅由for
循环的最后一次迭代确定,忽略之前的值。
关于java - Java 异常字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537161/