Hi
ich hab ein problem bei meiner mastermind aufgabe.
Ich weiß das das jetzt vielleicht nen bissl viel code auf einmal ist aber ich komm da net weiter und hab das gefühl das das kein großes problem hoffe ich
Den fehler hab ich rot markiert.
Er sagt mir das er int zu int [] net konvertieren kann da die scanner eingabe int ist
ich hab ein problem bei meiner mastermind aufgabe.
Ich weiß das das jetzt vielleicht nen bissl viel code auf einmal ist aber ich komm da net weiter und hab das gefühl das das kein großes problem hoffe ich
Den fehler hab ich rot markiert.
Er sagt mir das er int zu int [] net konvertieren kann da die scanner eingabe int ist
Code:
package aufgabe5;
public class a51 {
public static void main(String[] args) {
int[] z;
int[] original = a52.findeZahl();
boolean erraten = false;
System.out.println("MASTERMIND\n");
for (int i = 1; i <= 10; i++) { // Schleifenbeginn
System.out.println("\nSie haben noch " + (10 - i + 1)
+ " Versuch(e).");
int[] versuch = [B][COLOR="Red"]a53.liesZahl();[/COLOR][/B]
if (a52.treffer(original, versuch)) { // Erraten
System.out.println("Hervorragend! Sie haben die Zahl im" + i
+ ". Versuch erraten.");
erraten = true;
break;
System.out.println("Leider falsch geraten.\n"
+ a52.auswerten(original, versuch));
} // Schleifenende
if (!erraten) {
System.out.println("\nViel Glueck beim naechsten Mal!");
System.out.println("Die richtige Zahl waere " + a52.zahl(z)
+ " gewesen.");
}
}
}
}// class
Code:
package aufgabe5;
public class a52 {
// Wandle die Ziffern einer Zahl in einen String
public static StringBuilder zahl(int[] z) {
StringBuilder res = new StringBuilder(""); // Hier steht das
// Ergebnis
for (int i = 0; i < 4; i++)
res.reverse();
return res;
}// zahl
/**
* Zerteilt eine ganze positive Zahl 0<=z<=9999 in ihre vier Ziffern
*/
public static int[] ziffern(int z) {
int[] res = new int[4];
for (int i = 0; i < 4; i++) {
res[i] = z % 10; // Berechne die rechte Ziffer
z = z / 10; // Schiebe nach rechts
}
return res;
}// ziffern
/*
* .* Zerteilt eine ganze positive Zahl O<=z<=9999 in v vier ziffern. Wenn
* die Zahl die Voraussetzungen fuer u die Mastermind-Spielregeln nicht
* erfuellt (keine ~ zwei Ziffern sind gleich), wird null zurueckgegeben
*/
public static int[] bereiteAuf(int z) {
// Teste zuerst, ob die Zahl im richtigen
// Groessenbereich liegt
if (z < 0 || z > 9999)
return null;
// Nun teile die Zahl auf
int[] res = ziffern(z);
// Nun teste,ob sichzweiZifferngleichen
for (int i = 0; i < 4; i++)
for (int j = i + 1; j < 4; j++)
if (res[i] == res[j])
return null;
// Andernfalls gib das Ergebnis zurueck
return res;
}// bereit
/**
* Finde eine Zahl zwischen 0 und 9999, die die 47 Voraussetzungen fuer das
* Spiel erfuellt.
*/
public static int[] findeZahl() {
int[] res = null;// hier steht das Ergebnis
while (res == null) {
int zahl = (int) (9999 * Math.random());
res = bereiteAuf(zahl);
}
// Wenn die Schleife
// Zahlenkombination
return res;
}// findeZahl
/** Finde heraus, ob alle Ziffern uebereinstimmen */
public static boolean treffer(int[] original, int[] versuch) {
for (int i = 0; i < 4; i++)
if (original[i] != versuch[i])
return false;
return true;
}
public static String auswerten(int[] original, int[] versuch) {
int direkt = 0; // Zahl der direkten Treffer
int indirekt = 0; // Zahl der indirekten Treffer
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
if (original[i] == versuch[j]) {
if (i == j)
direkt++;
else
indirekt++;
}
return "Direkte Treffer: " + direkt + " " + "Indirekte Treffer: "
+ indirekt;
}
}
Code:
package aufgabe5;
import java.util.Scanner;
public class a53 {
public static int [] liesZahl(int versuch){
Scanner scan = new Scanner(System.in);
System.out.println("Bitte geben sie eine vierstellige Zahl ein");
return scan.nextInt();
}
}