Понятно как узнать, что массив строго возврастающий или убывающий:
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, у меня выдается, что массив убывающий.
Вы можете добавить ещё один флаг на "не то, не то". В коде установки первого флага необходимо будет проверять, какой флаг у вас уже стоит до этого и, если новый и старый различны - устанавливать значение второго на 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; //Всё хорошо или первая итерация
}
Вы можете к примеру не использовать флаг а задействовать счётчик и для каждой итерации в зависимости от фазы или инкриментить или дикриментить. По окончании цикла проверте на соответствие длинны массива и отсюда формируйте вывод. Как вы понимаете не равный покажет смешанность. Иначе если болле 0 возрастающий в остатке убывающей.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости