2016-03-30 2 views
0

Donc, je fais des exercices aléatoires pour un examen à venir, et je ne sais pas si c'est le fait que j'examine depuis des heures et que mon cerveau ne fonctionne pas, ou quelque chose dans ce code est faux.Pourquoi ce programme simple ne fonctionne-t-il pas?

Je tente de créer un programme java très simple qui demande à l'utilisateur la quantité de nombres qu'il souhaite entrer (totalNum), crée un tableau de cette longueur, puis demande à l'utilisateur pour chaque valeur individuelle. Après qu'il demande à l'utilisateur pour chaque valeur dans le tableau, il imprime le tableau.

Voici mon code:

import java.util.Scanner; 
public class Practice1 { 
    public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    System.out.println("How many numbers would you like to store?"); 
    int totalNum = s.nextInt(); 

    int[] numbers= new int[totalNum]; 


    for (int i = 0; i>totalNum; i++) { 
     System.out.println("Number" + i + " :"); 
     numbers[i] = s.nextInt(); 
     i++; 
    } 
    numbers.toString(); 
    System.out.println(numbers); 


} 
} 

Quand je le lance, il demande à l'utilisateur les chiffres que je veux stocker, puis imprime [I @ 33909752 et arrête. J'ai fait des dizaines de programmes comme celui-ci et pour la vie de moi, je ne peux pas comprendre où je me suis trompé.

Toute aide serait appréciée, merci!

+1

Ceci est également un double de [cette question] (http://stackoverflow.com/questions/29140402/how-do-i-print-my-java-object-without-getting-sometype2f92e0f4), ce qui concerne la sortie bizarre plus généralement. La réponse à cela a une bonne lecture que vous devriez probablement vous assurer de comprendre (peut-être après votre examen, quand vous êtes moins stressé :)). Mais pour votre problème immédiat d'impression du tableau, la question à laquelle je suis lié est probablement plus pertinente. – yshavit

+0

Aussi, je pense que vous avez un bug dans 'pour (int i = 0; i> totalNum; i ++)'. Pensez aux valeurs de 'i' et' totalNum' la première fois à travers cette boucle; combien de fois vous attendez-vous à ce que la boucle se répète si, disons, totalNum = 5? – yshavit

+0

Merci à tous! – Blake

Répondre

1

i>totalNum est le problème. La boucle for ne s'exécutera pas une seule fois.

La boucle comporte trois parties:

  1. l'action à effectuer avant le démarrage de la boucle
  2. La condition
  3. l'action à exécuter après chaque boucle

Votre état est i>totalNum , qui est faux pour i = 0 et totalNum = 1. La boucle ne s'exécutera même pas une fois.

Le i++ est déjà mentionné dans la boucle, vous n'avez plus besoin de l'inclure dans le corps de la boucle.

La sortie inattendue est provoquée par la méthode toString() par défaut de Array. Utilisez Arrays.toString() pour une sortie lisible.

2

Votre test de boucle est à l'envers. Cette

for (int i = 0; i>totalNum; i++) { 

devrait être

for (int i = 0; i < totalNum; i++) { 

tel qu'il est, le test est évaluée à false et la boucle est saisi. Et, ne pas incrémenter i dans le corps de la boucle (c'est ce que i++ fait dans le). Enfin,

System.out.println(numbers); 

ne va pas imprimer le tableau correctement, car les tableaux ne remplacent pas Object.toString(). Vous pouvez utiliser Arrays.toString comme

System.out.println(Arrays.toString(numbers)); 
+0

à droite, j'ai fixé que X.X. Cependant, le programme ne fonctionne toujours pas correctement. Dire que je dis que je voudrais stocker 3 numéros. il devrait me demander 3 valeurs ([0-2]). Il me demande la valeur 0, puis la valeur 2, puis s'arrête. Pourquoi saute-t-il deux valeurs? – Blake

+0

Vous avez laissé "i ++" dans le corps de la boucle. Enlevez ça. Parce que vous avez déjà incrémenté 'i' dans le' for'. –

+0

Omg ..... Je ferais mieux de dormir un peu haha. Merci tout le monde. je me sens stupide – Blake

0

Votre condition de boucle doit être

for (int i = 0; i<totalNum; i++) { 

et dans la boucle n'incrémente pas variable i

utilisation ci-dessous pour le résultat souhaité.

public class Practice1 { 
public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    System.out.println("How many numbers would you like to store?"); 
    int totalNum = s.nextInt(); 

    int[] numbers= new int[totalNum]; 

    for (int i = 0; i<totalNum; i++) { 
     System.out.println("Number" + i + " :"); 
     numbers[i] = s.nextInt(); 
     i++; //remove this 
    } 
    numbers.toString(); 
    System.out.println(Arrays.toString(numbers)); 


} 
}