kostenloser Webspace werbefrei: lima-city


Array mit Usereingaben befüllen, wie geht das?

lima-cityForumProgrammiersprachenJava

  1. Autor dieses Themas

    dschulte

    dschulte hat kostenlosen Webspace.

    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?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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;
    }
  4. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    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.
  5. Autor dieses Themas

    dschulte

    dschulte hat kostenlosen Webspace.

    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??
  6. 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
  7. Autor dieses Themas

    dschulte

    dschulte hat kostenlosen Webspace.

    hey danke dafür ;)
    allerdings habe ich da noch ein Problem, wenn das Programm aufgerufen wird, dann wird nach der Anzahl der Stimmen für die Partei 0 gefragt, was eigl. in der Realität keinen Sinn macht. (in der Informatik natürlich schon)
  8. 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);
    		}
    
    	}
    }
  9. Autor dieses Themas

    dschulte

    dschulte hat kostenlosen Webspace.

    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
  10. 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
  11. 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"?
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!