Retrait de la valeur 0 à partir d'une matrice triée?
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
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.