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.
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
Vous devez vous connecter pour publier un commentaire.
Assurez-vous de ne pas fermer et ré-initialisation de
Scanner stdin
avant d'appeler le constructeur, car je soupçonne que c'est le problème de savoir si vous faites quelque chose comme ci-dessous:stdin
à l'intérieur du constructeur de ne pas lire quoi que ce soit en tant que flux d'entréeSystem.in
est déjà fermé.OriginalL'auteur Yogendra Singh
votre code fonctionne très bien pour moi. après la création de la radio dans les principales passer comme un argument.
OriginalL'auteur PermGenError
Ajouter un Nom à l'ensemble de la méthode dans votre PhDCandidate classe. De cette façon, vous pouvez créer un PhDCandidate objet à l'intérieur de votre méthode principale et d'imprimer le nom ou faire n'importe quoi de main.
OriginalL'auteur Tejen Shrestha