Проверка массива на возврастание

264
18 мая 2018, 01:50

Понятно как узнать, что массив строго возврастающий или убывающий:

public void dec(){
    Scanner sc = new Scanner(System.in);
    System.out.print("Number of values: ");
    int n=sc.nextInt();
    int [] mas= new int[n];
//        заполнение массива
        for (int i = 0; i < mas.length; i++) {
            mas[i]=sc.nextInt();
        }
//        вывод массива
        for (int i = 0; i <mas.length; i++) {
            System.out.print(mas[i]+" ");
    }
//        проверка массива на возврастание
        boolean flag = true;
    for (int i = 1; i < mas.length; i++) {
        if (mas[i]<mas[i-1]) {
            flag=false;
            break;
        }
        if (mas[i]>mas[i-1]) {
            flag=true;
        }
    }
    if (flag==true) {
        System.out.println("Возврастающий");
    }
    if (flag==false) {
        System.out.println("убывающий");
    }

}

Но как добавить еще условие о том, что массив является ни убывающим, ни возврастающим ? При массиве 1 3 2, у меня выдается, что массив убывающий.

Answer 1

Вы можете добавить ещё один флаг на "не то, не то". В коде установки первого флага необходимо будет проверять, какой флаг у вас уже стоит до этого и, если новый и старый различны - устанавливать значение второго на true, значение которого позже проверите при выводе. Кодом (внутри цикла):

boolean tFlag = false; //Для хранения нового значения флага
if (mas[i]<mas[i-1]) {
  tFlag=false;
  break;
}
if (mas[i]>mas[i-1]) {
  tFlag=true;
}
if(i > 1 && (flag != tFlag)) { //Если убывало и возрастает (или наоборот)
  flag2 = true; //"Не то, не то"
  break;
} else {
  flag = tFlag; //Всё хорошо или первая итерация
}
Answer 2

Вы можете к примеру не использовать флаг а задействовать счётчик и для каждой итерации в зависимости от фазы или инкриментить или дикриментить. По окончании цикла проверте на соответствие длинны массива и отсюда формируйте вывод. Как вы понимаете не равный покажет смешанность. Иначе если болле 0 возрастающий в остатке убывающей.

READ ALSO
Реализация подсказки для пользователя

Реализация подсказки для пользователя

Делаю приложение с математическими и логическими квестамиНа каждом уровне у пользователя будет возможность использовать подсказку, то есть...

269
Ошибка java.lang.NullPointerException в jsp

Ошибка java.lang.NullPointerException в jsp

Всем приветпытаюсь при помощи сервелета + jsp сделать генерацию таблиц по введённым числам

267
Не создается окно в eclipse

Не создается окно в eclipse

Когда пытаюсь создать окно просто через некоторое время в консоли появляется надпись terminated и всеМне сказали нужно использовать SwingUtilities,...

243
Получение коллекции из Firebase

Получение коллекции из Firebase

В своем андроид-приложении я работаю с FirebaseКак я могу обратиться к полю Ingridients в моей базе данных и записать все значения поля Ingridients в ArrayList?...

237