java - Java 异常字符串比较

标签 java

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

相关文章:

java - 如何使用 Xtend 连接到 MySQL 数据库。

java - 在 Go 中是否有等同于 Java 的 String intern 函数?

Java、Struts2 和 AJAX。需要一些指示

java - 特殊字符 [^M] 出现在文件行尾,如果在 unix 上看到但在 eclipse 中看到则不会

Java:从 Latin-1 字节数组创建一个字符串

java - 休息 API 示例

java - 当我不需要它时,为什么要使用collect(Collectors.toList())?

Java-错误 : Actual and formal argument lists differ in length

Java POI API : Convert from *. xlsx 到 *.xls

java - 如何使用 SpringJUnit4ClassRunner 将映射器(mapstruct)注入(inject)到 Junit 测试中