fehler nach letzter zahl

Status
Nicht offen für weitere Antworten.
D

das p

Gast
sers!

bin grad dabei ein lotto zu programmieren. ohne großen schnickschnack einfach 6 zahlen - fertig ;)
nachdem ich die letzte, also sechste zahl eingegeben habe, kommt eine fehlermeldung:

Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
	at startUp.LottoTest2.auswerten(LottoTest2.java:57)
	at startUp.LottoTest2.main(LottoTest2.java:71)

mein quelltext sieht so aus:

Code:
package startUp;

import java.io.*;

public class LottoTest2 {
	
	int [] Zahlen = new int[6];
	int [] rzahl = new int[6];
	int richtige, j, i, a;
	static int richtigezahlen=0;
	double flag, Zahl;

	
	/* Zahlen generieren */
	public void zahlengenerieren(){
		for(i=1; i<=6; i++){
			Zahl = (Math.random()* 48)+1;	
		}
		
	}
	
	/* Schaut nach doppelten Zahlen */
	public void doppelteZahlen(){
		for(i=1; i<=6; i++){
			for(j=1; j<=6; j++){
				if(Zahlen[i] == Zahlen[j]){                           /** Wenn es doppelte Zahlen gibt */
					Zahl = (Math.random()* 48) +1;                    /** gegeriere eine neue */
					Zahlen[j] = (int) Math.round(Zahlen[i]);          /** und überschreibe die alte */
 					doppelteZahlen();                                 /** durchlauf nochmal (um wieder doppelte auszuschließen)*/
				}
			}
		}
	}
		
	
	/* Eingabe in die Konsole */
	public void eingabe() throws IOException{                          /** Fehlerausgabe */
		for(a=1; a<=6; a++){                                           /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + a +"te Zahl eingeben");            /** Aufforderung zur Eingabe */
	
			InputStreamReader eingabe = new InputStreamReader (System.in);
			BufferedReader peingabe = new BufferedReader (eingabe);
			
			flag =Integer.parseInt(peingabe.readLine());                /** Überprüft Eingabe der Zahlen */
			if(flag>49 || flag<1){                                      /**                "             */
				System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
				a--;
				
			}
		}
	}
	
	/*Auswerten wieviel Richtige */
	public void auswerten(){
		for(int i=0; i<=6; i++){
			for(int j=0; j<=6; j++){
				if(Zahlen[i] == Zahlen[j]){                             /** Generierte Zahlen mit Eingegebenen vergleichen */
					richtigezahlen++;                                   /** wenn identisch +1 */
				}
					
			}
		}
	}
	
	
	/* Programm ausführen */
	public static void main(String[] args)throws IOException{
		LottoTest2 lotto = new LottoTest2();                            /** Objekte erstellen */
		lotto.eingabe(); 
		lotto.zahlengenerieren(); 
		lotto.auswerten();
	
		/*
		* lotto.doppelteZahlen();
		*/
		
		System.out.println("Die Lottozahlen sind: ");
		for(int i = 0; i<6; i++){
			System.out.println(lotto.Zahlen[i]+ " ");                    /** Generierte Zahlen werden ausgegeben */
			System.out.println(richtigezahlen +" Zahlen erraten");       /** Richtige Zahlen werden ausgegeben */
		}
		
		
}
	
}

meine ausgabe (vor der fehlermeldung) so:

Code:
1te Zahl eingeben
1
2te Zahl eingeben
2
3te Zahl eingeben
3
4te Zahl eingeben
4
5te Zahl eingeben
5
6te Zahl eingeben
6


kann mir jemand helfen?
vielen dank!
 
D

das p

Gast
das war aber nicht der fehler

Code:
0te Zahl eingeben
1
1te Zahl eingeben
2
2te Zahl eingeben
3
3te Zahl eingeben
4
4te Zahl eingeben
5
5te Zahl eingeben
6
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
	at startUp.LottoTest2.auswerten(LottoTest2.java:57)
	at startUp.LottoTest2.main(LottoTest2.java:71)
 
A

Azubi

Gast
Zeile 57
Code:
 for(int j=0; j<=6; j++){
j<=5 oder j<6
aber nicht so wie es da steht...
 

The_S

Top Contributor
Du darfst (so wie azubi geschrieben hat) natürlcih dann auch nicht auf das 7. Element zugreifen wenn du nur 6 hast ...
 
D

das p

Gast
sehr gut kumpels :)
das problem wäre gelöst!
hab zwar nun n neues - aber das schau ich mir erstmal an ;)

ich hoffe, darf mich wieder melden wenn ich nicht weiter komme?!?!?


danke nochmals!
 
D

das p

Gast
Nun ist es weider so weit :p

quellcode
Code:
package startUp;

import java.io.*;

public class LottoTest2 {
	
	int [] Zahlen = new int[6];
	int [] rzahl = new int[6];
	int richtige, j, i, a;
	static int richtigezahlen=0;
	double  Zahl;
	int flag;

	
	/* Zahlen generieren */
	public void zahlengenerieren(){
		for(i=0; i<=5; i++){
			Zahl = Math.random()* 48+1;
			Zahlen[i] = (int) Math.round(Zahl);
		}
		
	}
	
	/* Schaut nach doppelten Zahlen */
	public void doppelteZahlen(){
		for(i=0; i<=5; i++){
			for(j= i+1; j<=5; j++){
				if(Zahlen[i] == Zahlen[j]){                           /** Wenn es doppelte Zahlen gibt */
					Zahl = (Math.random()* 48) +1;                    /** gegeriere eine neue */
					Zahlen[j] = (int) Math.round(Zahl);               /** und überschreibe die alte */
 					doppelteZahlen();                                 /** durchlauf nochmal (um wieder doppelte auszuschließen)*/
				}
			}
		}
	}
		
	
	/* Eingabe in die Konsole */
	public void eingabe() throws IOException{                          /** Fehlerausgabe */
		for(a=1; a<=6; a++){                                           /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + a +"te Zahl eingeben");            /** Aufforderung zur Eingabe */
	
			InputStreamReader eingabe = new InputStreamReader (System.in);
			BufferedReader peingabe = new BufferedReader (eingabe);
			try{
			flag =Integer.parseInt(peingabe.readLine());                /** Überprüft Eingabe der Zahlen */
			if(flag>49 || flag<1){                                      
				System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
				a--;
			}
				else{
					for(int i = 0; i<=5; i++){
						if(Zahlen[i]==flag){
							System.out.println("Zahl wurde schon eingegeben" + a++ +"te  Zahl erneut eingeben");
							flag =Integer.parseInt(peingabe.readLine());
							if(flag>49 || flag<1){
								System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
								a--;
							}
						else{
						Zahlen[a]=flag;
						a--;
						break;}
						}	
					}	
			Zahlen[a]=flag;
				}
			}
			catch(NumberFormatException e){
				a--;
			}
		}
			
	}
	
	/*Auswerten wieviel Richtige */
	public void auswerten(){
		for(int i=0; i<6; i++){
			for(int j=0; j<6; j++){
				if(Zahlen[i] == Zahlen[j]){                             /** Generierte Zahlen mit Eingegebenen vergleichen */
					richtigezahlen++;                                   /** wenn identisch +1 */
				}
					
			}
		}
	}
	
	
	/* Programm ausführen */
	public static void main(String[] args)throws IOException{
		
		LottoTest2 lotto = new LottoTest2();                            /** Objekte erstellen */
		lotto.eingabe(); 
		lotto.zahlengenerieren(); 
		lotto.auswerten();
	
		/*
		* lotto.doppelteZahlen();
		*/
		
		System.out.println("Die Lottozahlen sind: ");
		for(int i=0; i<=5; i++){
			System.out.println(lotto.Zahlen[i]+ " ");                    /** Generierte Zahlen werden ausgegeben */
			System.out.println(richtigezahlen +" Zahlen erraten");       /** Richtige Zahlen werden ausgegeben */
		}
		
		
}
	
}


meine ausgabe in der console
Code:
1te Zahl eingeben
1
2te Zahl eingeben
2
3te Zahl eingeben
3
4te Zahl eingeben
4
5te Zahl eingeben
5
6te Zahl eingeben
6
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6
	at startUp.LottoTest2.eingabe(LottoTest2.java:66)
	at startUp.LottoTest2.main(LottoTest2.java:93)


der fehler soll hier liegen
Code:
			Zahlen[a]=flag;

habe dort schon fast alle möglichen variablen eingesetzt, entweder wird nichts angezeigt oder noch mehr fehler.. iwie komisch ???:L


danke schonmal
 

The_S

Top Contributor
Du hast da immernoch ne Schleife von a = 1 bis a = 6. Außerdem inkrementierst du a jedesmal wenn die Zahl schonmal eingegeben wurde. Ist imho auch nicht Sinn und Zweck der Sache oder?
 
G

Guest

Gast
Mit der Schleife gibt es aber keine probleme.
würde ich den wert auf 0 setzen, würde in der konsole "0te Zahl eingeben" kommen.
komische sache..

ach habe es gerade gefunden
Code:
			System.out.println("" + a++ +"te Zahl eingeben");            /** Aufforderung zur Eingabe */

hatte das ++ vergessen..
 
D

das p

Gast
Code:
		for(a=0; a<6; a++){                                            /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + a++ +"te Zahl eingeben");          /** Aufforderung zur Eingabe */

klappt trotzdem nich ?!
hab gespeichert, 4x ausgeführt...
 
D

das p

Gast
is ja erstma egal wie ich programmiere, is ja 1. mein erstes mal dass ich was mit java mache und 2. muss es ja auch nur funktionieren.. feilen kann man immernoch ;)
 

The_S

Top Contributor
Was willste denn mit deiner Inkrementierung die ganze Zeit? Ich denke mal das sollte korrekt

Code:
System.out.println("blub" + (a + 1) + "blob");

heisen!?
 
D

das p

Gast
Jau so klappt es..
verstehe nur nicht wieso, dachte a++ bewirkt das gleiche wie (a + 1). a++ erhöht sich doch selbst oder?

naja, wie dem auch sei, danke für die mühe - bis hierher :)

Code:
1te Zahl eingeben
1
2te Zahl eingeben
2
3te Zahl eingeben
3
4te Zahl eingeben
4
5te Zahl eingeben
5
6te Zahl eingeben
6
Die Lottozahlen sind: 
45 
0 Zahlen erraten
33 
0 Zahlen erraten
15 
0 Zahlen erraten
38 
0 Zahlen erraten
45 
0 Zahlen erraten
46 
0 Zahlen erraten

habe momentan nurnoch einen ausgabefehler und muss doppelt generierte zahlen noch überprüfen..
ich mach dann mal weiter :)

nochmal danke!!! :)
 

The_S

Top Contributor
nein, da haste was falsch verstanden.

Code:
a++;

macht das Selbe wie

Code:
a = a + 1;

Hier wird a ein neuer Wert zugewiesen. Wenn man lediglich

Code:
a + 1;

schreibt, bekommt man als ergebnis a + 1 zurück, aber a bleibt unverändert.
 
D

das p

Gast
Code:
package startUp;

import java.io.*;

public class LottoTest2 {
	
	int [] Zahlen = new int[6];
	int [] rzahl = new int[6];
	int richtige, j, i, a;
	static int richtigezahlen=0;
	double  Zahl;
	int flag, zaehler;

	
	/* Zahlen generieren */
	public void zahlengenerieren(){
		for(i=0; i<=5; i++){
			Zahl = Math.random()* 48+1;
			Zahlen[i] = (int) Math.round(Zahl);
		}
		
	}
	
	/* Schaut nach doppelten Zahlen */
	public void doppelteZahlen(){
		for(i=0; i<=5; i++){
			for(j= i+1; j<=5; j++){
				if(Zahlen[i] == Zahlen[j]){                           /** Wenn es doppelte Zahlen gibt */
					Zahl = (Math.random()* 48) +1;                    /** gegeriere eine neue */
					Zahlen[j] = (int) Math.round(Zahl);               /** und überschreibe die alte */
 					doppelteZahlen();                                 /** durchlauf nochmal (um wieder doppelte auszuschließen)*/
				}
			}
		}
	}
		
	
	/* Eingabe in die Konsole */
	public void eingabe() throws IOException{                          /** Fehlerausgabe */
		for(a=0; a<6; a++){                                            /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + (a +1) +"te Zahl eingeben");          /** Aufforderung zur Eingabe */
			
			InputStreamReader eingabe = new InputStreamReader (System.in);
			BufferedReader peingabe = new BufferedReader (eingabe);
			try{
			flag =Integer.parseInt(peingabe.readLine());                /** Überprüft Eingabe der Zahlen */
			if(flag>49 || flag<1){                                      
				System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
				a--;
			}
				else{
					for(int i = 0; i<=5; i++){
						if(rzahl[i]==flag){
							System.out.println("Zahl wurde schon eingegeben!");
							System.out.println( + (a+1) +"te  Zahl erneut eingeben");
							flag =Integer.parseInt(peingabe.readLine());
							if(flag>49 || flag<1){
								System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
								a--;
								i--;
							}
						else{
						rzahl[a]=flag;
						a--;
						break;}
						}	
					}	
			rzahl[a]=flag;
				}
			}
			catch(NumberFormatException e){
				a--;
			}
		}
			
	}
	
	/*Auswerten wieviel Richtige */
	public void auswerten(){
		for(int i=0; i<6; i++){
			for(int j=0; j<6; j++){
				if(Zahlen[i] == rzahl[j]){                             /** Generierte Zahlen mit Eingegebenen vergleichen */
					richtigezahlen = richtigezahlen +1;                /** wenn identisch +1 */
				}
					
			}
		}
	}
	
	
	/* Generierte Zahlen sortieren "BubbleSort" */
	public void sort() {
	      boolean sortiert = true;
	      do {
	          sortiert = true;
	          for (int i = 1; i < Zahlen.length; i++) {
	              if (Zahlen[i - 1] > Zahlen[i]) {
	                  final int tmp = Zahlen[i - 1];
	                  Zahlen[i - 1] = Zahlen[i];
	                  Zahlen[i] = tmp;
	                  sortiert = false;
	              }
	          }
	      } while (!sortiert);
	  }
	    

	
	
	/* Programm ausführen */
	public static void main(String[] args)throws IOException{
		
		LottoTest2 lotto = new LottoTest2();                            /** Objekte erstellen */
		lotto.eingabe(); 
		lotto.zahlengenerieren(); 
		lotto.auswerten();
	

		lotto.doppelteZahlen();
		lotto.sort();

		
		System.out.println("Die Lottozahlen sind: ");
		for(int i=0; i<=5; i++){
			System.out.println(lotto.Zahlen[i]+ " ");                        /** Generierte Zahlen werden ausgegeben */
		}
		System.out.println(" ");
		System.out.println(richtigezahlen +" Zahl(en) richtig getippt");       /** Richtige Zahlen werden ausgegeben */	
}
	
}


Code:
1te Zahl eingeben
1
2te Zahl eingeben
2
3te Zahl eingeben
2
Zahl wurde schon eingegeben
3te  Zahl erneut eingeben
3
3te Zahl eingeben
4
4te Zahl eingeben
5
5te Zahl eingeben
7
6te Zahl eingeben
56
Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.
6te Zahl eingeben
45
Die Lottozahlen sind: 
7 
11 
14 
22 
29 
38 
 
1 Zahl(en) richtig getippt

juhuu, nun klappt alles!
nochmals vielen vielen dank! thumbs up! :) :)
 

The_S

Top Contributor
liegt hier

Code:
3te Zahl eingeben
2
Zahl wurde schon eingegeben
3te  Zahl erneut eingeben
3
3te Zahl eingeben
4

nicht ein Fehler vor? das letzte "3te Zahl eingeben" ist doch überflüssig oder?
 
D

das p

Gast
ouh, sehr gut beobachtet :)
Ja, isn bug. ich schau mal woran es liegt :))

thx!
 
D

das p

Gast
vll kannst du mir bei meinem gedankengang etwas auf die sprünge helfen..
also ich meine, ich müsste die schleife nochmal durchlaufen, um zu prüfen, ob nun eine andere zahl eingegeben wurde, nachdem eine doppelte eingegeben wurde, oder?

Code:
	public void eingabe() throws IOException{                             /** Fehlerausgabe */
		for(a=0; a<6; a++){                                               /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + (a +1) +"te Zahl eingeben");          /** Aufforderung zur Eingabe */
			
			InputStreamReader eingabe = new InputStreamReader (System.in);
			BufferedReader peingabe = new BufferedReader (eingabe);
			try{
			flag =Integer.parseInt(peingabe.readLine());                  /** Überprüft Eingabe der Zahlen */
			if(flag>49 || flag<1){                                      
				System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
				a--;
			}
				else{
					for(int i = 0; i<=5; i++){
						if(rzahl[i]==flag){
							System.out.println("Zahl wurde schon eingegeben!");
							System.out.println( + (a+1) +"te  Zahl erneut eingeben");
							flag =Integer.parseInt(peingabe.readLine());
							if(flag>49 || flag<1){
								System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
								a--;
							}
						else{
						rzahl[a]=flag;
						a--;
						break;}
						}	
					}	
			rzahl[a]=flag;
				}
			}
			catch(NumberFormatException e){
				a--;
			}
		}
			
	}

ich müsste also theoretisch nach dem
Code:
						if(rzahl[i]==flag){
							System.out.println("Zahl wurde schon eingegeben!");
							System.out.println( + (a+1) +"te  Zahl erneut eingeben");
							flag =Integer.parseInt(peingabe.readLine());

die schleife nochmal durchlaufen, bzw. diesen teil, oder?
 

The_S

Top Contributor
Dein Ansatz a-- ist schon gar nicht mal so schlecht. Ich würde dann noch mit einem boolean arbeiten über welchen du dann entscheidest welcher von deinen beiden möglichen Texten ausgegeben werden soll. Jenachdem ob die Zahl schonmal eingegeben wurde oder nicht wird der dann halt auf true oder false gesetzt.
 

Leroy42

Top Contributor
das p hat gesagt.:
dachte a++ bewirkt das gleiche wie (a + 1). a++ erhöht sich doch selbst oder?

Eben nicht!

(a+1) ist eine Operation die den Wert von a um eins erhöht liefert.
Der Wert von a bleibt dabei erhalten.

a++ liefert auch diesen Wert, erhöht aber auch a selbst.

Und da du a auch im entsprechenden Teil der for-Schleife
erhöhst, erhöhst du a eben bei jedem Schleifendurchlauf doppelt.
 
D

das p

Gast
moin,

komme einfach nicht weiter :(
weiß nicht, wo ich diese "ankerpunkte" (diese mit dem boolean) setzen soll, damit es funktioniert.

ich übergebe die eingegebene zahl doch in "ausgabe" und vergleiche es mit dem array "rzahl[a]" oder bin ich grad vollkommen neben der kappe?




Code:
	/* Eingabe in die Konsole */
	public void eingabe() throws IOException{                             /** Fehlerausgabe */
		for(a=0; a<6; a++){                                               /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + (a +1) +"te Zahl eingeben");          /** Aufforderung zur Eingabe */
			
			InputStreamReader eingabe = new InputStreamReader (System.in);
			BufferedReader peingabe = new BufferedReader (eingabe);
			try{
			ausgabe =Integer.parseInt(peingabe.readLine());                  /** Überprüft Eingabe der Zahlen */
			if(ausgabe>49 || ausgabe<1){
				System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
				a--;
			}
				else{
					for(int i = 0; i<=5; i++){
						if(rzahl[i]==ausgabe){                                /** Überprüft identische Zahlen */
							System.out.println("Zahl wurde schon eingegeben!");
							System.out.println( + (a+1) +"te  Zahl erneut eingeben");
							ausgabe =Integer.parseInt(peingabe.readLine());
							if(ausgabe>49 || ausgabe<1){
								System.out.println("Ungültige Zahl! Nur Zahlen zwischen 1 und 49 eingeben");
							}
						else{
						rzahl[a]=ausgabe;
						a--;
						break;}
						}
					}
			rzahl[a]=ausgabe;
				}
			}
			catch(NumberFormatException e){
				a--;
			}
		}
			
	}
 

The_S

Top Contributor
Ein kleines Beispiel (du lernst ja schnell!)

Code:
boolean flag = false;
for (int i = 0; i < array.length; i++) {
   flag = false;
   for (int j = 0; j < zufall.length; j++) {
      if (array[i] == zufall[j]) {
         flag = true;
         break;
      }
   }
   if (flag) {
      System.out.println("Bitte Wert " + i + " verändern");
      i--;
   }
   else {
      System.out.println("Bearbeite nächsten Wert");
   }
}

Das funktioniert so natürlich nicht, da bei mir keine Möglichkeit gegeben ist den Wert von Element "i" im Array "array" zu ändern, aber das Prinzip sollte dir jetzt klar sein!?
 
D

das p

Gast
Code:
package startUp;

import java.io.*;

public class LottoTest2 {
	
	int [] Zahlen = new int[6];
	int [] rzahl = new int[6];
	int richtige, j, i, a;
	static int richtigezahlen=0;
	double  Zahl;
	int ausgabe, zaehler;
	boolean flag;

	
	/* Zahlen generieren */
	public void zahlengenerieren(){
		for(i=0; i<=5; i++){
			Zahl = Math.random()* 48+1;
			Zahlen[i] = (int) Math.round(Zahl);
		}
		
	}
	
	/* Schaut nach doppelten Zahlen */
	public void doppelteZahlen(){
		for(i=0; i<=5; i++){
			for(j= i+1; j<=5; j++){
				if(Zahlen[i] == Zahlen[j]){                           /** Wenn es doppelte Zahlen gibt */
					Zahl = (Math.random()* 48) +1;                    /** gegeriere eine neue */
					Zahlen[j] = (int) Math.round(Zahl);               /** und überschreibe die alte */
 					doppelteZahlen();                                 /** durchläuft nochmal (um wieder doppelte auszuschließen)*/
				}
			}
		}
	}
		
	
	/* Eingabe in die Konsole */
	public void eingabe() throws IOException{                             /** Fehlerausgabe */
		for(a=0; a<6; a++){                                               /** Eingabezahlen von 1 bis 6 */
			System.out.println("" + (a +1) +". Zahl eingeben:");          /** Aufforderung zur Eingabe */
			
			InputStreamReader eingabe = new InputStreamReader (System.in);
			BufferedReader peingabe = new BufferedReader (eingabe);
			try{
			ausgabe =Integer.parseInt(peingabe.readLine());                  /** Überprüft Eingabe der Zahlen */
			rzahl[a]=ausgabe;
			if(ausgabe>49 || ausgabe<1){
				System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49.");
				a--;
			}
			else{
					for(int i = 0; i<a; i++){
						if(rzahl[i]==ausgabe){                                /** Überprüft identische Zahlen */
							System.out.println("Zahl wurde schon eingegeben!");
							a--;
							break;
						}
					}
			rzahl[a]=ausgabe;
				}
			}
			catch(NumberFormatException e){
				a--;
			}
			}
		}

	
	/*Auswerten wieviel Richtige */
	public void auswerten(){
		for(int i=0; i<6; i++){
			for(int j=0; j<6; j++){
				if(Zahlen[i] == rzahl[j]){                             /** Generierte Zahlen mit Eingegebenen vergleichen */
					richtigezahlen = richtigezahlen +1;                /** wenn identisch +1 */
				}
					
			}
		}
	}
	
	
	/* Generierte Zahlen sortieren "BubbleSort" */
	public void sort() {
	      boolean sortiert = true;
	      do {
	          sortiert = true;
	          for (int i = 1; i < Zahlen.length; i++) {
	              if (Zahlen[i-1] > Zahlen[i]) {
	                  final int tmp = Zahlen[i-1];
	                  Zahlen[i-1] = Zahlen[i];
	                  Zahlen[i] = tmp;
	                  sortiert = false;
	              }
	          }
	      } while (!sortiert);
	  }
	    

	
	
	/* Programm ausführen */
	  public static void main(String[] args)throws IOException{ 
		
		LottoTest2 lotto = new LottoTest2();                            /** Objekte erstellen */
		lotto.eingabe(); 
		lotto.zahlengenerieren(); 
		lotto.auswerten();

		lotto.doppelteZahlen();
		lotto.sort();

		
		System.out.println("Die Lottozahlen sind: ");
		for(int i=0; i<=5; i++){
			System.out.println(lotto.Zahlen[i]+ " ");                        /** Generierte Zahlen werden ausgegeben */
		}
		System.out.println(" ");                                             /** Absatz */
		System.out.println(richtigezahlen +" Zahl(en) richtig getippt");     /** Richtige Zahlen werden ausgegeben */	
}
	
}

Habe es nun, hoffe ich, endlich geschafft :)
Habe nicht das mit den ankern gemacht, sondern mir was anderes einfallen lassen.

was sagste? :)
 

The_S

Top Contributor
Joa, so gehts auch :) .

Zeile 62 ist Überflüssig

Code:
rzahl[a]=ausgabe;

Die Zuweisung machst du schon in Zeile 49.
 
D

das p

Gast
okay, hast recht :)
ich mach mich dann jetzt an die feinheiten

vielen dank, dass du mir geholfen hast! 10/10 in freundlichkeit und hilfsbereitschaft :)


vll liest man sich mal wieder!
mfg
 
D

das p

Gast
so, da bin ich wieder :D

wie mache ich nun ein applet daraus?
suche fast schon 1h im inet rum, finde aber leider nichts, ausser so sachen wie

Code:
public
class HelloWorldApplet  extends java.applet.Applet{  
public  void paint(java.awt.Graphics g) {    
g.drawString("Hello world!", 50, 25);  
}
}

aber das hilft mir nicht viel :/
 

The_S

Top Contributor
Hm, lies dazu am Besten mal das Swing (Grafik) Kapitel in deinem Buch oder in einem Online-Buch deiner Wahl (zu finden über Forensuche oder in der Bücher, Links, Tutorials Sektion des Forums). Dir hier die Basics beizubringen wäre imho zu viel des Guten ;) .
 
D

das p

Gast
ist das denn so viel arbeit daraus nun ein applet zu machen?
kann man nich einfach ein fenster öffnen indem dann quasi die konsole geöffnet wird und man das lotto durchlaufen lassen kann? :/

schad'
 

The_S

Top Contributor
Erstmal, es besteht ein Unterschied ob du ein Fenster (JFrame) oder ein Applet (JApplet), welches in einem Web-Browser eingebaut wird, erstellen möchtest.

Es wäre zwar schnell programmiert, aber dir würde es nichts helfen, weil du nur neue Begriffe hören würdest mit denen du (noch) nichts anfangen kannst wie z. B. Listener, Container, Componenten, LayoutManager, ...

Ist wohl das Beste, wenn du dich mit einem Buch erstmal zurückziehst, sobald du Grundkentnisse hast, werden wir dir gerne helfen. Aber daran hab ich mal keine Zweifel du lernst ja ziemlich schnell!
 
D

das p

Gast
Gut, dann werde ich mal weiter recherchieren, lernen und lesen :)
vielen dank schonmal bis hierhin!
 
D

das p

Gast
Code:
package startUp; 

import java.io.*; 

public class LottoTest { 
    
   int [] Zahlen = new int[6]; 
   int [] rzahl = new int[6]; 
   int  j, i, a; 
   static int richtigezahlen=0; 
   double  Zahl; 
   int ausgabe; 

    
   /* Zahlen generieren */ 
   public void zahlengenerieren(){ 
      for(i=0; i<=5; i++){ 
         Zahl = Math.random()* 48+1; 
         Zahlen[i] = (int) Math.round(Zahl); 
      } 
       
   } 
    
   /* Schaut nach doppelten Zahlen */ 
   public void doppelteZahlen(){ 
      for(i=0; i<=5; i++){ 
         for(j= i+1; j<=5; j++){ 
            if(Zahlen[i] == Zahlen[j]){                           /** Wenn es doppelte Zahlen gibt */ 
               Zahl = (Math.random()* 48) +1;                    /** gegeriere eine neue */ 
               Zahlen[j] = (int) Math.round(Zahl);               /** und überschreibe die alte */ 
               doppelteZahlen();                                 /** durchläuft nochmal (um wieder doppelte auszuschließen)*/ 
            } 
         } 
      } 
   } 
       
    
   /* Eingabe in die Konsole */ 
   public void eingabe() throws IOException{                             /** Fehlerausgabe */ 
      for(a=0; a<6; a++){                                               /** Eingabezahlen von 1 bis 6 */ 
         System.out.println("" + (a +1) +". Zahl eingeben:");          /** Aufforderung zur Eingabe */ 
          
         InputStreamReader eingabe = new InputStreamReader (System.in); 
         BufferedReader peingabe = new BufferedReader (eingabe); 
         try{ 
         ausgabe =Integer.parseInt(peingabe.readLine());                  /** Überprüft Eingabe der Zahlen */ 
         rzahl[a]=ausgabe; 
         if(ausgabe>49 || ausgabe<1){ 
            System.out.println("Ungültige Zahl! Es gelten nur Zahlen zwischen 1 und 49."); 
            a--; 
         } 
         else{ 
               for(int i = 0; i<a; i++){ 
                  if(rzahl[i]==ausgabe){                                /** Überprüft identische Zahlen */ 
                     System.out.println("Zahl wurde schon eingegeben!"); 
                     a--; 
                     break; 
                  } 
               } 
            } 
         } 
         catch(NumberFormatException e){ 
            a--; 
         } 
         } 
      } 

    
   /*Auswerten wieviel Richtige */ 
   public void auswerten(){ 
      for(int i=0; i<6; i++){ 
         for(int j=0; j<6; j++){ 
            if(Zahlen[i] == rzahl[j]){                             /** Generierte Zahlen mit Eingegebenen vergleichen */ 
               richtigezahlen = richtigezahlen +1;                /** wenn identisch +1 */ 
            } 
                
         } 
      } 
   } 
    
    
   /* Generierte Zahlen sortieren "BubbleSort" */ 
   public void sort() { 
         boolean sortiert = true; 
         do { 
             sortiert = true; 
             for (int i = 1; i < Zahlen.length; i++) { 
                 if (Zahlen[i-1] > Zahlen[i]) { 
                     final int tmp = Zahlen[i-1]; 
                     Zahlen[i-1] = Zahlen[i]; 
                     Zahlen[i] = tmp; 
                     sortiert = false; 
                 } 
             } 
         } while (!sortiert); 
     } 
       

    
    
   /* Programm ausführen */ 
     public static void main(String[] args)throws IOException{ 
       
      LottoTest2 lotto = new LottoTest2();                            /** Objekte erstellen */ 
      lotto.eingabe(); 
      lotto.zahlengenerieren(); 
      lotto.auswerten(); 

      lotto.doppelteZahlen(); 
      lotto.sort(); 

      System.out.println(" ");
      System.out.println("Die Lottozahlen sind: "); 
      for(int i=0; i<=5; i++){ 
         System.out.print(lotto.Zahlen[i]+ " ");                        /** Generierte Zahlen werden ausgegeben */ 
      } 
      System.out.println(" ");                                             /** Absatz */ 
      System.out.println(richtigezahlen +" Zahl(en) richtig getippt");     /** Richtige Zahlen werden ausgegeben */    
} 
    
}

Als ich heute morgen das Programm aufrief, wurden die richtigen Zahlen nicht mehr gezählt..

Code:
1. Zahl eingeben:  1
2. Zahl eingeben:  2
3. Zahl eingeben:  3
4. Zahl eingeben:  4
5. Zahl eingeben:  5
6. Zahl eingeben:  6
 
Die Lottozahlen sind: 
2 7 11 32 37 39  
0 Zahl(en) richtig getippt

Eigentlich müsste ich eine Richtige haben :/
 

The_S

Top Contributor
Also bei mir funktioniert das einwandfrei ... Du weist aber schon, dass du in der main-Methode eine Instanz deiner Klasse LottoTest2 erzeugst und nicht der geposteten Klasse LottoTest?

Noch eine paar Anmerkungen, wenn dein Quellcode schöner werden soll ;) :

1.) Variablennamen schreibt man klein
2.) Die Integer-Variable richtigezahlen brauchste nicht static machen. Kannst dich ja mal mit dem Schlüsselwort static beschäftigen, dazu gibt es in den FAQ imho einen Beitrag.
3.) Man sollte auf Variablen grundsätzlich von außen nur mit gettern und settern zugreifen und die Variablen intern als privat deklarieren. Warum erklärt dir auch ein Beitrag in den FAQ
 
D

das p

Gast
Das mit LottoTest2 war der Fehler, vielen Dank!
Ist quasi ein Backup-QT, da ich mit dem anderen versuche das ganze in einem Applet darzustellen. Und bevor ich mir alles kaputt mache, habe ich diesen in einer anderen Datei gesichert ;)

Die QT-Verschönerungen werde ich mir bei Gelegenheit auch mal anschauen!
Vielen Dank!! :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J fehler nach windows update Java Basics - Anfänger-Themen 44
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
K Fehler nach Installation von Java 3D Java Basics - Anfänger-Themen 2
S Fehler nach Button-Funktion Java Basics - Anfänger-Themen 13
W Hilfe! Fehler, obwohl nach Anleitung richtig! Java Basics - Anfänger-Themen 2
A nach if abfrage kommt fehler Java Basics - Anfänger-Themen 8
S Fehler nach dynamischer Anpassung - Minesweeper Java Basics - Anfänger-Themen 6
J Fehler nach FocusLost Java Basics - Anfänger-Themen 2
P Fehler nach Deployment (NoClassDefFound & NoSuchMethod) Java Basics - Anfänger-Themen 8
G Datei nach und nach beschreiben. wo ist der Fehler Java Basics - Anfänger-Themen 5
F Kann mir jemand bei dem Fehler helfen? Java Basics - Anfänger-Themen 6
Juelin jedit Fehler beim starten Java Basics - Anfänger-Themen 2
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
E Matrizenmultiplikation Fehler Java Basics - Anfänger-Themen 0
Z Fehler Zeiterfassungsprogramm Anzeige Java Basics - Anfänger-Themen 3
C SwingWorker mit Fehler Java Basics - Anfänger-Themen 2
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
G Compiler-Fehler Fehler in Zeile 1 beheben, wie? Java Basics - Anfänger-Themen 9
W Fehler in der Datei pom.xml Java Basics - Anfänger-Themen 19
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
ohneInformatik; Dynamische Zinsen. Wo liegt der Fehler? Java Basics - Anfänger-Themen 4
Fiedelbambu deriveFont Fehler wer kann Helfen? Java Basics - Anfänger-Themen 4
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Lion.King Fehler in double und int Java Basics - Anfänger-Themen 7
H BlueJ: was genau ist hier der Fehler? Java Basics - Anfänger-Themen 14
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
D Datentypen LocalDate.parse() ergibt Fehler Java Basics - Anfänger-Themen 5
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
N Fehler "Cannot instantiate the type" Java Basics - Anfänger-Themen 3
L Ich weis nicht was der Fehler ist! Java Basics - Anfänger-Themen 14
L30nS JNI Fehler, JRE und JDK Java Basics - Anfänger-Themen 8
E Executable jar file fehler Java Basics - Anfänger-Themen 9
S Fehler beim Programm Java Basics - Anfänger-Themen 2
U Warum kriege ich hier eine nullpointer exception, sehe den Fehler nicht (swing) Java Basics - Anfänger-Themen 1
J Syntax-Fehler? Java Basics - Anfänger-Themen 2
Jose05 Fehler im Programm feststellen Java Basics - Anfänger-Themen 2
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
I Fehler bei for-Schleife Java Basics - Anfänger-Themen 6
lol5443 Tic Tac Toe Fehler Java Basics - Anfänger-Themen 5
K Fehler bei der Implementierung Java Basics - Anfänger-Themen 6
N Fehler im Code (Aufgabe für Anfänger) Java Basics - Anfänger-Themen 11
W Verschachtelte If-else --> finde meinen Fehler nicht Java Basics - Anfänger-Themen 30
J Fehler bei array aus anderer Klasse Java Basics - Anfänger-Themen 3
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
N Was bedeutet dieser Fehler Java Basics - Anfänger-Themen 2
fuerteb Compiler-Fehler Methode wird nicht bzw. als Fehler erkannt Java Basics - Anfänger-Themen 4
Lion.King Fehler Java Basics - Anfänger-Themen 5
AlexG. Nullpointer exeption Fehler Java Basics - Anfänger-Themen 0
C Fehler im Code Java Basics - Anfänger-Themen 10
J Anfänger, Fehler; "Der Hund liegt begraben" Java Basics - Anfänger-Themen 3
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
V Wer findet den Fehler :) Java Basics - Anfänger-Themen 12
B ArrayIndexOutOfBoundsException, ich finde den Fehler nicht? Java Basics - Anfänger-Themen 10
A Compiler Fehler - not a statement Java Basics - Anfänger-Themen 2
Arita welche Fehler gibt es noch? wie kann ich es noch vervollständigen Java Basics - Anfänger-Themen 15
S Fehler bei Code mit SubStrings für mich nicht auffindbar. Java Basics - Anfänger-Themen 4
S Kriege Fehler "Exception in thread" beim Benutzen von SubStrings. Java Basics - Anfänger-Themen 2
H Logik Fehler erkennen Java Basics - Anfänger-Themen 21
T Fehler in Caesar-Chiffre Java Basics - Anfänger-Themen 7
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
B Nicht reproduzierbarer Fehler bei Kompilierung - Shortcut "Bereinigung" Compiler ? Java Basics - Anfänger-Themen 4
Nerdinfekt BMI Rechner, fehler beim Zurückgeben des Strings? Java Basics - Anfänger-Themen 2
pumpgun99 Fehler Meldung "else without if" Java Basics - Anfänger-Themen 3
P Was bedeutet dieser Fehler? Java Basics - Anfänger-Themen 31
KogoroMori21 Java Datum Differenz (kleiner Fehler) Java Basics - Anfänger-Themen 10
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
H Fehler: NullPointerException und ich weiß net warum Java Basics - Anfänger-Themen 4
R Ich sehe meinen fehler nicht Java Basics - Anfänger-Themen 8
Johannes_ece Fehler: Application Terminated (TypeError): var$0.$moveToolTo is not a function Java Basics - Anfänger-Themen 4
GermanPie Fehler in Putty (kein Hauptmanifestattribut, in jar) Java Basics - Anfänger-Themen 4
M Scannen von *.txt - Dateien; wo sind der oder die Fehler? Java Basics - Anfänger-Themen 4
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
JavaClap "Bruchrechner" liefert Fehler/keine Ausgabe bei Addition und Subtraktion Java Basics - Anfänger-Themen 0
B if Clause Fehler Java Basics - Anfänger-Themen 2
G Fibonacci Zahlenreihe Fehler Java Basics - Anfänger-Themen 4
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
B Fehler, aber ich weiß nicht warum Java Basics - Anfänger-Themen 3
C system cannot be resolved Fehler in Eclipse Java Basics - Anfänger-Themen 18
J Fehler im Code, aber ich weiß nicht wieso! Java Basics - Anfänger-Themen 6
M Compiler-Fehler Fehler beim Ausführen des Codes Java Basics - Anfänger-Themen 25
M While-Schleifen-Fehler Java Basics - Anfänger-Themen 4
N Fehler bei JUnit Test Java Basics - Anfänger-Themen 5
C Projekte in 2 versch. Arbeitsbereichen: auf ein Projekt verweisen (ohne Fehler zu bekommen) Java Basics - Anfänger-Themen 8
R Java SQL Fehler! Java Basics - Anfänger-Themen 4
L non-static Fehler Java Basics - Anfänger-Themen 16
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
L Methoden Wie Löse ich ext Methoden Aufruf Fehler? Java Basics - Anfänger-Themen 3
F Methoden Bitte Helft mir meinen Fehler zu finden. Möchte in diesem Bankenprogramm durch die Konsoleneingabe auswählen welches Konto reduziert und welches erhö Java Basics - Anfänger-Themen 17
C Fehler bei der Compilierung Java Basics - Anfänger-Themen 1
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
S Warum dieser Fehler? Java Basics - Anfänger-Themen 1
B Fehler bei Ausführung Java Basics - Anfänger-Themen 5
Kirby.exe Fehler beim Ausgeben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben