De Java à l'aide du Scanner en tant que paramètre pour un constructeur

C'est une question pour un devoir scolaire, c'est pourquoi je suis en train de faire dans une telle façon.

De toute façon, je fais un scanner à l'aide de Stdin dans la méthode main (Scanner stdin = new Scanner(System.en); est la ligne), la lecture des données à partir d'un txt spécifié lorsque le programme est exécuté. Ce Scanner fonctionne comme prévu dans la main, cependant j'ai besoin de l'utiliser dans une classe personnalisée qui a Scanner comme argument:

    public PhDCandidate(Scanner stdin)
    { 

    name = stdin.nextLine();
    System.out.println(name); //THIS NEVER RUNS
    preliminaryExams = new Exam[getNumberOfExams()];

    for(int i = 0; i <= getNumberOfExams(); i++)
    {
        preliminaryExams[i] = new Exam(stdin.nextLine(), stdin.nextDouble());
    }
    System.out.print("alfkj");
   }

À ce point de l'appel du Scanner sera juste la fin du programme, avec aucune des exceptions ou des erreurs levée. Seulement l'appel .next() fonctionne. J'ai pu faire le programme de travail, mais il serait hacky, et je ne comprends vraiment pas ce qui se passe. Je pense que je suis absent un concept très simple, mais je suis perdu. Toute aide serait appréciée.

"À ce stade de l'appel du Scanner sera juste la fin du programme, avec aucune des exceptions ou des erreurs jeté." À quel moment exactement? Où dans votre code à la fin du programme?
Je ne pense pas que votre programme fait terminé. Je pense que votre console est en attente pour l'entrée à la place. Essayez d'entrer un certain nom sur la console.
Code-Gourou: Il se termine à chaque fois que j'essaie d'utiliser le Scanner (à l'exception de l'entrée standard.next(), tous les autres methords pause), donc juste à essayer de les utiliser .nextLine()
avez-vous résolu votre problème?
Hey merci pour les aider tout le monde. S'avère que le problème était avec l'Examen de la classe, et le moyen de le Scanner fonctionne. Ce qui se produit est que lorsque j'étais à l'appel de nextInt() dans le main (ainsi que nextDouble() dans le code ci), il lit le int (ou double), mais n'avance PAS à la ligne suivante. Ce qui a entraîné une nouvelle nextLine() pour renvoyer une chaîne vide comme il n'y avait pas de contenu à gauche, mais la ligne du Scanner a été encore n'avait pas passé un caractère de nouvelle ligne, et chaque jeton dans le txt est sur une ligne différente. S0 oui j'problème stupide.

OriginalL'auteur user1781671 | 2012-10-31