Прочитайте массив int и проверьте, отсортирован ли он - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть массив int, и я пытаюсь выяснить, как я могу сделать программу так, чтобы она хранила целые числа, введенные пользователем, присваивая значения элементам массива int s. Я пытаюсь разместить код так, чтобы он принимал целые числа от пользователя в цикле (цикл while или for), который выполняется 10 раз. И затем есть код, который проверяет последовательность целых чисел, чтобы увидеть, что она не уменьшается в другом цикле, который выполняется 9 раз, используя два отдельных цикла. Ниже приведено то, из чего я должен сформировать этот «Шашка».

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 голосов
/ 30 апреля 2018

Ты почти у цели. Чего вам не хватает, так это фактического сравнения внутри вашего цикла и сохранения результата где-то:

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

Здесь мы используем логическое значение listIsInOrder для хранения, если список в порядке или нет.

Цикл начинается с индекса 1 вместо 0, потому что внутри цикла мы всегда сравниваем каждое значение с индексом i со значением до него, которое находится по индексу i-1.

Как только цикл находит значение, которое меньше значения, которое было до него, он устанавливает listIsInOrder в значение false. Если все значения в массиве упорядочены, listIsInOrder не изменится и останется true.

Затем вы можете просто проверить значение listIsInOrder:

if (listIsInOrder) {
    // handle valid input
}
else {
    // handle invalid input
}

Обратите внимание, что я переименовал ваш массив, потому что имена переменных в Java должны начинаться со строчной буквы. Заглавные буквы предназначены для названий классов. Следование таким соглашениям делает ваш код более читабельным.

0 голосов
/ 30 апреля 2018

Просто убедитесь, что каждое последующее число больше предыдущего. Если нет, вы можете просто изменить логическое значение, указывающее, в порядке ли массив, и распечатать разные строки.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...