Comment obtenir de l'ArrayList<Integer> et Scanner pour jouer à nice?
import java.util.*;
public class CyclicShiftApp{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<Integer>();
while(scan.hasNextInt()){
list.add(scan.nextInt());
}
Integer[] nums = new Integer[list.size()];
nums = list.toArray(nums);
for(int i = 0;i < nums.length; i++){
System.out.println(nums[i]);
}
}
Grâce à de mauvaises-mans-débogage, j'ai trouvé que le while(scan.hasNextInt())
n'est pas d'ajouter quoi que ce soit. Ce qui pourrait mal se passer? Est mon google-fu de faiblesse ou de manque de savoir-faire, de me laisser tomber? Je suis assez nouveau à la programmation, et aussi peu familiers avec les Listes alors pensé que ce serait une belle première étape, mais quelque chose n'est pas une addition. Il compile également les beaux-donc ce n'est pas la syntaxe(ou plus). Peut-être un casting problème?
Vous n'avez pas dit quoi que ce soit nous sur quelle entrée vous l'ai donné. Il fonctionne pour moi. Si je tape dans les 10 (retour) 20 (retour) 30 (retour) Ctrl-D (retour), il montre les trois numéros.
Oh désolé. Juste une liste de nombres avec des espaces. par exemple. 14 17 18 33 54 1 4 6
Encore une fois, si j'ai taper dans l', puis appuyez sur retour, puis Ctrl-D, revenir, il imprime tous les numéros. Comment êtes-vous appelé à disparaître? (Félicitations pour montrer une courte mais complète du programme, et essayer d'apprendre à partir de la base, plutôt que de courses directement à une interface graphique+base de données etc, par la manière. Je souhaite que tout le monde a eu cette approche.)
Vous pouvez faire la fin de la boucle en fournissant des non-entier.
Oh désolé. Juste une liste de nombres avec des espaces. par exemple. 14 17 18 33 54 1 4 6
Encore une fois, si j'ai taper dans l', puis appuyez sur retour, puis Ctrl-D, revenir, il imprime tous les numéros. Comment êtes-vous appelé à disparaître? (Félicitations pour montrer une courte mais complète du programme, et essayer d'apprendre à partir de la base, plutôt que de courses directement à une interface graphique+base de données etc, par la manière. Je souhaite que tout le monde a eu cette approche.)
14 17 18 33 54 1 4 6
il va les traiter comme String
d'entrée et de scan.hasNextInt()
retournera false.Vous pouvez faire la fin de la boucle en fournissant des non-entier.
OriginalL'auteur Samwise Gibbens | 2013-04-19
Vous devez vous connecter pour publier un commentaire.
Fait ce travail, le maître Samsagace?
Je suppose qu'il ya une raison pourquoi vous avez besoin de la liste comme un tableau, sinon la conversion d'un tableau est inutile. Comme Jon Skeet mentionne dans les commentaires, la boucle va prendre fin que lorsque le flux n'a pas d'un côté de type int, c'est à dire. une non-valeur entière ou d'un fichier EOF si vous utilisez java CyclicShiftApp < input_file.txt'.
OriginalL'auteur rtheunissen
Votre problème est ici :
Vous suffit d'entrer un personnage dit e.g
q
une fois que vous avez terminé la saisie de toutes les valeurs entières et puis votre programme affichera les résultats attendus.Oui, mais pour cela, vous devez terminer la saisie. Soit avec un fichier qui se termine automatiquement ou quelque chose comme Ctrl + C sur la ligne de commande de Windows. (Ou Ctrl + D et entrée)
Il n'y a aucun moyen de détecter ce qui est de la dernière int, sauf si vous définissez certaines. Donc utiliser des caractères ou non entière à préciser que c'est la fin de l'entrée.
OriginalL'auteur Amit Deshpande
OriginalL'auteur Trupti Parsai