【问题标题】:Sorted / Not sorted - How do I print the answer to the console?已排序/未排序 - 如何将答案打印到控制台?
【发布时间】:2013-09-16 12:40:08
【问题描述】:

我有一个程序可以检查列表是否已排序。如何打印答案? (即“列表已排序”、“列表未排序”)。

public class CheckList {

public static void main(String[] args) {
    int[] myList = new int[10];

    // Read in ten numbers
    Scanner input = new Scanner(System.in);
    System.out.println("Enter ten numbers: ");
    for (int i = 0; i < myList.length; i++) {
        myList[i] = input.nextInt();

    }
}

//Check if list is sorted
public static boolean isSorted(int[] myList) {
    if (myList[0] > 1) {
        for (int i = 1; i < myList[0]; i++)
            if (myList[i] > myList[i + 1])
                return false;
    }
    return true;
}
}

【问题讨论】:

  • 顺便说一句,isSorted 方法只是检查数组是否按升序排序。即使数组降序排序,它也会返回 false。
  • @user1401472 它没有,当达到myList[0] 时它会停止,所以如果我有一个包含 3 个元素的数组和myList[0] = 5,该方法将在某个时候抛出一个IndexOutOfBoundsException .该算法不起作用:)

标签: java arrays list sorting printing


【解决方案1】:

只需在if 中调用方法:

if(isSorted(myList)) {
    System.out.println("Array is sorted");
} else {
    System.out.println("Array is not sorted");
}

无论如何,你的isSorted 方法不起作用,我会做这样的事情:

//checks if array is sorted in ascending order
public static boolean isSorted(int[] myList) {
    if(myList == null) return false; //just checking

    for (int i = 0; i < myList.length - 1; i++) {
        if (myList[i] > myList[i + 1]) {
            return false;
        }
    }
    return true;
}

【讨论】:

  • @user2783940 不客气!如果你认为这是最好的答案,别忘了accept it
【解决方案2】:

只需在 for loop 之后调用方法

for (int i = 0; i < myList.length; i++) {
      myList[i] = input.nextInt();
    }
if(isSorted(myList)) {
    System.out.println("The list is sorted");
} else {
    System.out.println("The list is not sorted");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多