Les nombres ne sont pas consécutifs

Résolu
Bonjour,
mon prg s'affiche pas bonne résultat
en cas désordre des nombres, il devait s'afficher
"Les nombres ne sont pas consécutifs"

mais il s'affiche toujours
"Les nombres sont consécutifs"
voilà mon output:
Entrez le nombre de valeur<10 = 3
Entrez les nombres :1 = 5
Entrez les nombres :2 = 2
Entrez les nombres :3 = 1
Les nombres sont consécutifs


import java.util.Scanner;
public class Divers3
{
public static void main(String[] args)
{
int tab[]=new int[10];
boolean flag;
Scanner sc=new Scanner(System.in);
System.out.print("Entrez le nombre de valeur<10 = ");
int nb=sc.nextInt();

for(int i=0;i<nb;i++)
{
System.out.print("Entrez les nombres :"+(i+1)+" = ");
tab[i]=sc.nextInt();
}
flag=true;
//flag=false;
for(int i=0;i<nb;i++)
{
if(tab[i]!=tab[i+1]+1)
{
flag=false;
//flag=true;
}
}
if(flag=true)
{
System.out.println("Les nombres sont consécutifs");
}
else if(flag=false)
{
System.out.println("Les nombres ne sont pas consécutifs");
}
}
}



3 réponses

  1. je pense pas que ça vienne de la mais petite erreur dans le code.

    dans la comparaison des nombre, tu va comparer le nombre numéro:
    0 et 1 : OK
    1 et 2 : OK
    2 et 3 : OK
    3 et 4 : ALERTE car tab[4] n'existe normalement pas. le fait que tu ait déclaré ton tableau directement a 10 fait que tab[4] existe mais tu ne sais pas ce qu'il y a dedans. initialise le avec nb, c'est mieux.
    0
    1. j'ai essayé ainsi:

      import java.util.Scanner;
      public class Divers3
      {
      public static void main(String[] args)
      {
      //int i;
      int tab[]=new int[10];
      boolean flag;
      Scanner sc=new Scanner(System.in);
      System.out.print("Entrez le nombre de valeur<10 = ");
      int nb=sc.nextInt();
      int redim=tab[nb-1];
      //int tab[]=new int[nb];
      for(int i=0;i<nb-1;i++)
      {
      System.out.print("Entrez les nombres :"+(i+1)+" = ");
      tab[i]=sc.nextInt();
      }
      flag=true;
      //flag=false;
      for(int i=1;i<nb-1;i++)
      {
      if(tab[i]!=tab[i-1]+1)
      {
      flag=false;
      //flag=true;
      }
      }
      //flag=true;
      if(flag)
      {
      System.out.println("Les nombres sont consécutifs");
      }
      else
      {
      System.out.println("Les nombres ne sont pas consécutifs");
      }
      }
      }

      mais output a une erreur
      Entrez le nombre de valeur<10 = 4
      Entrez les nombres :1 = 5
      Entrez les nombres :2 = 8
      Entrez les nombres :3 = 3
      Les nombres ne sont pas consécutifs

      j'ai mis 4 éléments mais il sort que 3 éléments
      merci pour votre aide
      0
      1. je vois pas du tout a quoi sert le redim :) mais le tab en commentaire a a l'air utile
        0
    2. j'ai corrigé

      int tab[]=new int[10];
      boolean flag;
      Scanner sc=new Scanner(System.in);
      System.out.print("Entrez le nombre de valeur<10 = ");
      int nb=sc.nextInt();
      int redim=tab[nb-1];
      //int tab[]=new int[nb];
      for(int i=0;i<nb;i++)
      {
      System.out.print("Entrez les nombres :"+(i+1)+" = ");
      tab[i]=sc.nextInt();
      }
      flag=true;
      //flag=false;
      for(int i=1;i<nb-1;i++)
      {
      if(tab[i]!=tab[i-1]+1)
      {
      flag=false;
      //flag=true;
      }
      }
      //flag=true;
      if(flag)
      {
      System.out.println("Les nombres sont consécutifs");
      }
      else
      {
      System.out.println("Les nombres ne sont pas consécutifs");
      }

      merci beaucoup
      0