Verificar sequencia ordenada (em ordem crescente ou decrescente)

Sequência de números inteiros, verifica se for ordenada verdadeiro (em ordem crescente ou decrescente), senão é falsa. Se um número tiver o mesmo valor que o número a seguir, ele não quebrará a ordem. A sequência termina com 0.

Exemplos de entradas e saídas correspondentes:

Entrada 1:
9 8 7 6 5 4 3 2 1 0

Saída 1: true

Entrada 2:
1 2 3 3 9 0

Saída 2: true

Entrada 3:
1 2 5 5 2 3 0

Saída 3: false

Preciso de ajuda, estou tentando a dias… Agradeço muito qualquer ajuda…

    import java.util.Scanner;

    public class Main {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            int a = 0;
            while (s.hasNextInt()) {
                int i = s.nextInt();
                a = i;
                if (i < a) {
                    if (i < a) {
                        System.out.println("true");
                    } else if (i > a) {
                        System.out.println("false");
                        break;
                    }
                } else if (i > a) {
                    if (i > a) {
                        System.out.println("true");
                    } else if (i < a) {
                        System.out.println("false");
                        break;
                    }
                }  else if (i == a) {
                }
            }
        }
    }
1 curtida

Você pode fazer assim, (salvando a sequência em uma lista):

import java.util.*;

class Main {
  public static void main(String[] args) {
    
    //Teste
    ArrayList<Integer> teste1 = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));
    ArrayList<Integer> teste2 = new ArrayList<>(Arrays.asList(6,5,4,3,2,1));
    ArrayList<Integer> teste3 = new ArrayList<>(Arrays.asList(3,5,1,6,2,4));
    
    System.out.println("teste1: "+ isSorted(teste1));
    System.out.println("teste2: "+ isSorted(teste2));
    System.out.println("teste3: "+ isSorted(teste3));
    
    /*
    *Saída:
    *teste1: true
    *teste2: true
    *teste3: false
    */
  }
  
  public static boolean isSorted(List<Integer> vetor){
    /*
    * Vetor com 1 elemento estar ordenado!
    * Vetor com 2 elemento está em ordem crescente ou decrescente!
    */
    if(vetor.size()<=2){
      return true;
    }
    
    /*
    *Se k é negativo, então a diferença (d) entre um elemento e seu sucessor
    *também tem que ser negativo, caso contrário, não está em ordem decrescente!
    *
    *Se k é positivo, a diferença (d) também é positiva,
    *caso contrário, a lista não está em ordem crescente!
    */
    int k = vetor.get(1) - vetor.get(0);
    
    for(int i = 1; i<(vetor.size()-1);i++){

      int d = vetor.get(i+1) -vetor.get(i);

      if((k < 0 && d>0) || (k > 0 && d < 0)){
        return false;
      }
    }
    return true;
  }

}

Obrigada :smiling_face_with_three_hearts:, vou seguir as suas dicas para poder montar a solução do problema e posta aqui. :grinning:

1 curtida