gpt4 book ai didi

java - Java 异常字符串比较

转载 作者:行者123 更新时间:2023-12-01 21:24:19 26 4
gpt4 key购买 nike

我在这里阅读了之前的字符串比较问题,它们都使用了与我正在使用的不同的方法。也许他们的方法要好得多,但我想用我的方法来实现这一点。我正在尝试编写一个函数来比较两个字符串并输出按字母顺序排列在前的字符串,其中大写字母始终被认为位于小写字母之前。 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);
}
}

最佳答案

  1. 不需要 while 循环;如果 for 循环结束后 a 为 0,则再次运行该 for 循环不会导致不同的结果,从而导致无限循环.

  2. 您为 str1每个字符设置了a;因此,a 的最终值仅由 for 循环的最后一次迭代确定,忽略之前的值。

关于java - Java 异常字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com