读取int数组并检查它是否已排序

时间:2018-04-30 19:58:52

标签: java arrays sorting

我有一个int数组,我试图找出如何创建程序,以便通过将值分配给int数组的元素来存储用户输入的整数秒。我正在尝试放置代码,以便它接受来自用户的循环(while或for循环)执行10次的整数。然后有代码检查整数序列,看看它在另一个使用两个独立循环执行9次的循环中不减少。以下是我必须从中形成这个“Checker”。

class ArrayRecorder {
    public static void main(String[] args) {
        int Array[] = new int[10];
        System.out.println("Enter ten integers seperated by spaces, then press return after. ");    
        for(int count = 0; count < 10; count++)
            Array[count] = A3Helper.nextInteger();
        for (int count = 0; count < 10; count++ )
            System.out.print(Array[count]+ " ");

对不起,如果这看起来像个愚蠢的问题,我想我是在思考它。我试图修改代码,但无法弄明白,下面是我已经开始的。

class ArrayChecker {
public static void main(String[] args) {
    int Array[] = new int[10];
    System.out.println("Enter ten integers seperated by spaces, then press return after. ");    
    for(int count = 0; count < 10; count++)
        Array[count] = A3Helper.nextInteger();
    System.out.print("List is in order");

以下是程序输入和输出的外观示例 喜欢: 输入以空格分隔的十个整数,然后按Return键。 10 3 0 -4 200 80 -95 87 23 -67 列表不按顺序。

这是另一个例子: 输入以空格分隔的十个整数,然后按Return键。 -5 -4 -3 0 1 2 2 3 10 11 列表是按顺序

也是A3Helper代码:

import java.util.Scanner;
class A3Helper {
static Scanner keyboard = new Scanner(System.in);
static int nextInteger() {
    return keyboard.nextInt();
}

}

2 个答案:

答案 0 :(得分:1)

只需检查每个连续数字是否大于之前的数字。如果没有,您只需更改一个布尔值,指示数组是否有序并打印出不同的字符串。

boolean inOrder = true;
for (int count = 0; count < 9; count++) {
    if (Array[count + 1] < Array[count]) {
        inOrder = false;
        break;
    }
}

if (inOrder) {
    System.out.println("Array is in order.");
} else {
    System.out.println("Array is not in order.");
}

请注意,我们只是循环遍历数组索引0到8,而不是9,因为否则Array[count + 1]将导致ArrayIndexOutOfBoundsException

答案 1 :(得分:0)

你快到了。你缺少的是在循环中进行实际比较并将结果存储在某处:

boolean listIsInOrder = true;
for (int i = 1; i < 10; i++) {
    if (array[i] < array[i-1]) {
        listIsInOrder = false;
    }
}

这里我们使用布尔值listIsInOrder来存储列表是否有序。

循环从索引1而不是0开始,因为在循环内部我们总是将索引i的每个值与它之前的值进行比较,该值在索引{{1 }}

一旦循环找到的值小于之前的值,就会将i-1设置为false。如果数组中的所有值都是有序的,listIsInOrder将不会更改并保持listIsInOrder

然后,您可以简单地检查true

的值
listIsInOrder

请注意我已重命名您的数组,因为Java中的变量名称应以小写字母开头。大写字母用于类名。坚持这些约定使您的代码更具可读性。