Wie man ArrayList<Integer> und Scanner zu spielen schön?
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]);
}
}
Dank poor-mans-debugging habe ich herausgefunden, dass die while(scan.hasNextInt())
ist nicht wirklich etwas hinzuzufügen. Was könnte schief gehen? Ist mein google-fu schwach oder Mangel an know-how, lassen Sie mich runter? Ich bin ziemlich neu zu Programmieren, und so unvertraut mit den Listen, so gedacht das wäre doch ein schöner Erster Schritt, aber er etwas nicht addieren. Es kompiliert auch gut, also Seine syntax nicht(mehr). Vielleicht ein casting-Problem?
Sie haven T erzählte uns etwas über das, was Eingang haben Sie es gegeben. Es funktioniert für mich. Wenn ich in 10 (return) 20 (zurück) 30 (return) Strg-D (hin und zurück) es zeigt die drei zahlen.
Oh, tut mir Leid. Nur eine Liste von zahlen mit Leerzeichen. zB. 14 17 18 33 54 1 4 6
Wieder, wenn ich Schreibe, dann Enter, dann Ctrl-D wieder, es gibt alle zahlen. Wie sind Sie beenden die Eingabe? (Herzlichen Glückwunsch zum anzeigen einer kurzen, aber vollständigen Programm, und versuchen zu lernen, von Grund auf eher als racing gerade an einem GUI - + - Datenbank usw, by the way. Ich wünschte, jeder nahm diesen Ansatz.)
Sie können die Schleife beenden, indem Sie die nicht-ganzzahlige.
Oh, tut mir Leid. Nur eine Liste von zahlen mit Leerzeichen. zB. 14 17 18 33 54 1 4 6
Wieder, wenn ich Schreibe, dann Enter, dann Ctrl-D wieder, es gibt alle zahlen. Wie sind Sie beenden die Eingabe? (Herzlichen Glückwunsch zum anzeigen einer kurzen, aber vollständigen Programm, und versuchen zu lernen, von Grund auf eher als racing gerade an einem GUI - + - Datenbank usw, by the way. Ich wünschte, jeder nahm diesen Ansatz.)
14 17 18 33 54 1 4 6
wird es so behandeln, als String
- Eingang und - scan.hasNextInt()
false zurück.Sie können die Schleife beenden, indem Sie die nicht-ganzzahlige.
InformationsquelleAutor Samwise Gibbens | 2013-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Funktioniert das, Meister samweis?
Ich nehme an, es hat einen Grund, warum Sie brauchen die Liste als array, sonst die Umwandlung in ein array ist unnötig. Wie Jon Skeet erwähnt in den Kommentaren, die Schleife wird beendet, nur wenn der stream nicht über eine next-int, ie. ein nicht-integer-Wert oder eine Datei EOF wenn Sie 'java-CyclicShiftApp < input_file.txt'.
InformationsquelleAutor rtheunissen
Dein problem ist hier :
Geben Sie nur noch einen Charakter sagen e.g
q
sobald Sie fertig Eingabe aller integer-Werte und dann wird Ihr Programm drucken erwarteten Ergebnisse.Ja, aber dazu müssten Sie um die Eingabe zu beenden. Entweder mit einer Datei, die automatisch endet oder so etwas wie Strg + C auf der Windows-Kommandozeile. (Oder Strg + D und enter)
Gibt es keine Möglichkeit, dass Sie erkennen kann, das Letzte int, es sei denn, Sie definieren einige. So verwenden Sie Zeichen oder nicht integer zu bezeichnen, dass es ist Ende der Eingabe.
InformationsquelleAutor Amit Deshpande
InformationsquelleAutor Trupti Parsai