Question

Je me demandais s'il y avait un moyen de supprimer la valeur par défaut « 0 » valeur que je reçois quand je lance le code suivant:

Scanner scan = new Scanner(System.in);

int [] x = new int[4];
for ( int i = 1; i < x.length; i++ )
{
    System.out.println( "Enter number " + i + ": ");
    x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));
}

La sortie est la suivante

[0, i[1], i[2], i[3]]

Bien sûr, toutes les valeurs du tableau ici sont en fait les chiffres entrés dans la console. Le code fonctionne. Il trie avec succès les chiffres dans le bon ordre, cependant, il y a toujours ce méchant 0.

Je ne cherche pas à supprimer tous les 0 (je veux que l'utilisateur soit en mesure d'entrer 0 et avoir apparaître) -? Je ne veux pas la valeur par défaut 0. Toutes les idées

Était-ce utile?

La solution

Lorsque vous allouez un tableau de taille 4, vous allouons quatre ints: i [0], i [1], i [2], et i [3]. Parce que Java est assez convivial, il met les quatre d'entre eux à 0. Donc, ce que vous voyez sur la sortie est [i[0],i[1],i[2],i[3]] (dans l'ordre de tri). Le genre n'ajoute le 0, il était déjà là. Si vous ne souhaitez que 3 numéros, vous devez allouer un int [3] au lieu d'un int [4]. Et puis, pour aller avec cela, lorsque vous demandez le numéro 1, la stocker dans i [0]. Le plus simple changement de le faire serait de changer simplement la ligne de haut en

 int [] x = new int[3];

et la ligne plus tard à

 x[i-1] = scan.nextInt();

La modification proposée par d'autres réponses est plus commun, l'un, cependant. La plupart des programmeurs auraient i passer de 0 à 2, puis i + 1 sortie quand on parle à l'utilisateur.

Autres conseils

Les indices de tableau en Java sont basées 0, pas 1-basé. Donc itérer commencer à 0 au lieu de 1 et vous devriez être bon:

for ( int i = 0; i < x.length; i++ )

for (int i = 0 ; i

Le code suivant devrait fonctionner:

Scanner scan = new Scanner(System.in);

int[] x = new int[3];
for (int i = 0; i < x.length; i++)
{
  System.out.println( "Enter number " + i + ": ");
  x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));

Le problème était, comme d'autres l'ont souligné, que votre int i devrait commencer à 0, pas 1.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top