Array mit Usereingaben befüllen, wie geht das?
lima-city → Forum → Programmiersprachen → Java
anfangen
anzahl
array
code
datei
eingabe
element
feld
import
konsole
mache
null
partei
programm
schleife
speichern
stimmen
string
system
zahl
-
Hi,
ich versuche ein Java Programm zu schreiben, bei dem der user in der Konsole angibt wie lang das Array einmal sein soll und dann soll jedem Element noch ein spezielle Wert zugewiesen werden. Wie mache ich das. Am besten doch mit einer for-schleife, nicht war?Also das weiß ich bereits. Bloß wie kann ich dann bei jeder einzelen Eingabe die Elemente des Arrays festlegen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hier mal ein kleiner codeschnipsel (ungetestet)
//feldgörße auf int fg einlesen lassen int feld = new int[fg]; for(int i = 0; i<fg; i++) { //weitere werte eingeben lassen zb auf int w speichern; feld[i] = w; }
-
int size = Integer.parseInt("5"); String[] arr = new String[size]; for(int i = 0; i < size; i++){ System.out.println("Index "+i+": "); //Auf Eingabe prüfen }
Du musst einfach in der Schleife die Usereingabe abfragen, kannst sie dann direkt setzen und danach schauen, was du damit machen willst. -
Mein Quell Code sieht momentan so aus:
//parteien System.out.print("Geben Sie die Anzahl der Parteien ein: "); int anzahl =Integer.parseInt(inData.readLine()); int [][]arr= new int[anzahl][]; //Werte eingeben for (int i=0; i<=arr.length;i++){ if(i==0){ i++; System.out.print("Geben Sie die Anzahl der Stimmen fuer die Partei " +i + " ein: "); int stimmen =Integer.parseInt(inData.readLine()); arr[i]= new int [stimmen]; } else { System.out.print("Geben Sie die Anzahl der Stimmen fuer die Partei " +i + " ein: "); int stimmen =Integer.parseInt(inData.readLine()); }
Wenn ich jetzt die Eingabe-Werte im Array speichern möchte mache ich das doch mit
arr[i]= new int [stimmen];
aber dann erhalte ich nach der Eingabe in der Konsole eine Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at datei.main(datei.java.45)
das hat ja was mit der for-schleife zu tun, oder nicht, denn die läuft ja bis über die grenze des Arrays hinaus, i<=arr.length.
Doch wie kann ich alle Elemente des Arrays dann mit der Eingabe füllen?? -
Hallo erstmal,
1. wieso erstelltst du ein mehrdimensionales Array?
ich würde dies so machen:
// parteien BufferedReader inData = new BufferedReader(new InputStreamReader( System.in)); System.out.print("Geben Sie die Anzahl der Parteien ein: "); try { int anzahl = Integer.parseInt(inData.readLine()); int[] arr = new int[anzahl]; // Werte eingeben for (int i = 0; i < arr.length; i++) { System.out .print("Geben Sie die Anzahl der Stimmen fuer die Partei " + i + " ein: "); arr[i] = Integer.parseInt(inData.readLine()); } } catch (Exception e) { System.out.println("Der eingegebene Wert ist keine Zahl " + e); }
Grüsse -
Ah ja, das ist weil das Array bei 0 anfängt und daher der Counter (i) auch bei null anfangen muss.
import java.io.BufferedReader; import java.io.InputStreamReader; public class Aufg0203 { /** * @param args */ public static void main(String[] args) { // parteien BufferedReader inData = new BufferedReader(new InputStreamReader( System.in)); System.out.print("Geben Sie die Anzahl der Parteien ein: "); try { int anzahl = Integer.parseInt(inData.readLine()); int nr = 1; int[] arr = new int[anzahl]; // Werte eingeben for (int i = 0; i < arr.length; i++) { System.out .print("Geben Sie die Anzahl der Stimmen fuer die Partei " + nr + " ein: "); arr[i] = Integer.parseInt(inData.readLine()); nr++; } } catch (Exception e) { System.out.println("Der eingegebene Wert ist keine Zahl " + e); } } }
-
Jo, besten dank, so hatte ich mir das vorgestellt :D
Irgendwie kam ich nicht darauf eine variable nr zu deklarieren, die dann inkrementiert wird, so hab ich halt immer versucht i als die Parteiennummer ansteigen zu lassen, was ja zur Folge hatte, dass der Wert dann über das Array hinaus geht ;-P -
Nun schauen wir mal alle "Fehler" an:
int [][]arr= new int[anzahl][];
hier erstellst du ein 2 Dimensionales Array welches wie eine tabelle aussieht:
[0,0] [1,0] [2,0] ...
[0,1] [1,1] [2,1] ...
.
.
.
hoffe du kannst dir das Vorstellen.
Dann hast du die Variable i 2 mal inkrementiert:
for (int i=0; i<=arr.length;i++){
if(i==0){
i++;
wofür du die if-Abfrage in der for-Schleife benutzt hast ist mir ein Rätsel^^
Grüsse und bei weiteren Problemen melde dich -
sirferguson schrieb:
Ah ja, das ist weil das Array bei 0 anfängt und daher der Counter (i) auch bei null anfangen muss.
import java.io.BufferedReader; import java.io.InputStreamReader; public class Aufg0203 { /** * @param args */ public static void main(String[] args) { // parteien BufferedReader inData = new BufferedReader(new InputStreamReader( System.in)); System.out.print("Geben Sie die Anzahl der Parteien ein: "); try { int anzahl = Integer.parseInt(inData.readLine()); int nr = 1; int[] arr = new int[anzahl]; // Werte eingeben for (int i = 0; i < arr.length; i++) { System.out .print("Geben Sie die Anzahl der Stimmen fuer die Partei " + nr + " ein: "); arr[i] = Integer.parseInt(inData.readLine()); nr++; } } catch (Exception e) { System.out.println("Der eingegebene Wert ist keine Zahl " + e); } } }
Warum schreibst Du denn statt "nr" nicht einfach "i + 1"? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage