【问题标题】:The compare line doesn't work, why? How can I fix it?比较行不起作用,为什么?我该如何解决?
【发布时间】:2019-04-26 03:36:51
【问题描述】:
public static void main(String[] args) {
    int[] my_Numbers= {1789, 2035, 1899, 1456, 2013, 
            1458, 2458, 1254, 1472, 2365, 
            1456, 2165, 1457, 2456};
    for(int i=0; i < my_Numbers.length;){
        if (Integer.compare(my_Numbers[i],my_Numbers[(i+1)])==1) {
            int x = my_Numbers[i];
            my_Numbers[i] = my_Numbers[i+1];
            my_Numbers[i+1] = x;
            i=0;
        }else {i++;}
    }
    String  result= my_Numbers.toString();
    System.out.println(result);
}

【问题讨论】:

  • 在什么情况下不起作用?这不是你打印数组的方式。
  • 欢迎来到 Stack Overflow!请阅读How to Ask 上的指南,这是一个好问题。此外,寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误最短的代码有必要 在问题本身中重现它。没有明确的问题陈述的问题对其他读者没有用处。
  • 除了您报告的问题之外,String result= my_Numbers.toString(); 不会按照您的意愿行事。你应该改用Arrays.toString(myNumbers)

标签: java error-handling


【解决方案1】:

试试这个:

public static void main(String[] args) {
    int[] my_Numbers= {1789, 2035, 1899, 1456, 2013,
            1458, 2458, 1254, 1472, 2365,
            1456, 2165, 1457, 2456};
    for(int i=0; i < my_Numbers.length-1;){
        if (Integer.compare(my_Numbers[i],my_Numbers[(i+1)])==1) {
            int x = my_Numbers[i];
            my_Numbers[i] = my_Numbers[i+1];
            my_Numbers[i+1] = x;
            i=0;
        }else {i++;}
    }
    String  result= Arrays.toString(my_Numbers);
    System.out.println(result);
}

【讨论】:

  • 很高兴为您提供帮助
【解决方案2】:

首先在执行 (i+1) 之前添加 if 条件,因为当 i 是最后一个元素时,它会给你 arrayindexoutof 绑定异常。

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多