package ab51_zahlenraetsel; | |||||
/** | |||||
* variable Liste um Zahlenreihen zu speichern | |||||
* | |||||
* @author A. Kimmig | |||||
* | |||||
*/ | |||||
public class List { | |||||
/** | |||||
* Verweis auf den ersten Eintrag bzw. null wenn noch kein | |||||
* Eintrag vorhanden ist | |||||
*/ | |||||
public Node first; | |||||
/** | |||||
* Fügt eine neue Zahl zur Liste hinzu, indem zuerst ein Node | |||||
* mit dieser Zahl erstellt wird und dieser Node an die | |||||
* bestehende Liste angehängt wird | |||||
* | |||||
* @param z Zahl, die in die Liste eingetragen werden soll | |||||
*/ | |||||
public void hinzufügen(int z) { | |||||
// Neue Node erstellen | |||||
Node neu = new Node(z, null); | |||||
// Hilfsobjekt, um durch die Liste zu gehen | |||||
Node zwischen = first; | |||||
// Wenn Liste noch leer | |||||
if(first == null) { | |||||
first = neu; | |||||
} else { // ansonsten | |||||
while(zwischen.next != null) { | |||||
// gehe durch die Liste bis zum Ende | |||||
zwischen = zwischen.next; | |||||
} | |||||
// an letztes Element anhängen | |||||
zwischen.next = neu; | |||||
} | |||||
} | |||||
/** | |||||
* Gibt die Anzahl der Einträge zurück | |||||
* | |||||
* @return Anzahl der Einträge | |||||
*/ | |||||
public int länge() { | |||||
// wenn Liste leer ist | |||||
if(first == null) { | |||||
// gib 0 als Länge zurück | |||||
return 0; | |||||
} | |||||
// Hilfsobjekt, um durch Liste zu gehen | |||||
Node zwischen = first; | |||||
// Zähl-Variable | |||||
int count = 0; | |||||
// gehe durch die Liste durch | |||||
while(zwischen != null) { | |||||
count++; | |||||
zwischen = zwischen.next; | |||||
} | |||||
// gib die gezählte Anzahl zurück | |||||
return count; | |||||
} | |||||
/** | |||||
* Entfernt einen Eintrag aus der Liste und gibt die Zahl, | |||||
* die in diesem Eintrag stand zurück | |||||
* | |||||
* @return Zahl, die entfernt wurde. | |||||
*/ | |||||
public int herausnehmen() { | |||||
if(first == null) { | |||||
return 0; | |||||
} | |||||
// erste Zahl der Liste zwischenspeichern | |||||
int zahl = first.zahl; | |||||
// der erste Eintrag wird "verschoben" | |||||
first = first.next; | |||||
// die zwischengespeicherte Zahl wird zurückgegeben | |||||
return zahl; | |||||
} | |||||
} | |||||
package ab51_zahlenraetsel; | |||||
/** | |||||
* Ein Node repräsentiert einen Eintrag in der Liste. | |||||
* | |||||
* Er setzt sich zusammen aus einer Zahl und einem | |||||
* Verweis auf den nachfolgenden Eintrag | |||||
* | |||||
* @author A. Kimmig | |||||
* | |||||
*/ | |||||
public class Node { | |||||
/** | |||||
* Zahl in diesem Eintrag | |||||
*/ | |||||
public int zahl; | |||||
/** | |||||
* Verweis auf den nächsten Eintrag | |||||
*/ | |||||
public Node next; | |||||
/** | |||||
* Konstruktor | |||||
* @param z Zahl, die in diesem Eintrag steht | |||||
* @param next Verweis auf den nächsten Eintrag | |||||
*/ | |||||
public Node(int z, Node next) { | |||||
this.zahl = z; | |||||
this.next = next; | |||||
} | |||||
} |
package ab51_zahlenraetsel; | |||||
import java.util.Scanner; | |||||
public class Start { | |||||
public static void main(String[] args) { | |||||
// erstelle die Liste | |||||
List zahlenreihe = new List(); | |||||
// erstelle den Scanner, um Zahlen eingeben zu können | |||||
Scanner sc = new Scanner(System.in); | |||||
// wiederhole immer wieder | |||||
while (true) { | |||||
// Hilfsobjekt, um durch die Liste zu gehen | |||||
Node current = zahlenreihe.first; | |||||
// Frage alle bisherigen Zahlen ab... | |||||
System.out.println("Gib die bisherigen Zahlen ein:"); | |||||
while (current != null) { | |||||
System.out.print("Nächste Zahl: "); | |||||
int zahl = sc.nextInt(); | |||||
// ...und vergleiche sie mit der Liste | |||||
if (zahl != current.zahl) { | |||||
// wenn falsche Zahl eingegeben wurde | |||||
System.out.println("Falsch! Du hast verloren!"); | |||||
// brich das ganze Programm ab | |||||
return; | |||||
} | |||||
// ansonsten gehe zur nächsten Zahl | |||||
current = current.next; | |||||
} | |||||
System.out.println("Alles richtig!"); | |||||
System.out.print("Bitte neue Zahl eingeben: "); | |||||
// füge eine neue Zahl zur Liste hinzu | |||||
zahlenreihe.hinzufügen(sc.nextInt()); | |||||
System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); | |||||
} | |||||
} | |||||
} |
import java.util.Scanner; | import java.util.Scanner; | ||||
import zahlenraetsel.List; | |||||
public class Start { | public class Start { | ||||
public static void main(String[] args) { | public static void main(String[] args) { | ||||
// ertelle die Liste | // ertelle die Liste |