DiabloJulian
Freizeitschrauber(in)
Habe hier eine Übungsaufgabe von einem Buch (Java von Kopf bis Fuß) bekommen und hab es bisher auch verstanden. Jetzt wollten wir "unser" erstes Programm schreiben (Schiffe- bzw. DotCom-Versenken). Bisher existiert nur eine Reihe mit einem "Schiff" (3 Längeneinheiten), wobei die Reihe ein Array ist.
Zu Beginn haben wir die Aufgabe mit einem Array gelöst, aber es gab einen Bug (Es wurde immer Treffer angezeigt, obwohl man den gleichen Zellort schon einmal getroffen hat). Deshalb sollte man die Aufgabe nun mit einer ArrayList lösen. Dazu sollte man lediglich die (Einfaches)-DotCom Klasse umschreiben.
Zuvor mit Array:
Mit ArrayList:
Nun wir mir folgender Fehler in der Spielklasse (mit der main-Methode) angezeigt:
Es ist mir klar, dass ich eigentlich kein Array deklarieren dürfte, jedoch steht im Buch keine Anmerkung auf einen Fehler und das Programm sollte eigentlich so funktionieren. Deshalb wende ich mich nun an euch, da ich davon ausgehe, dass ihr besser als ein Buch seit .
Hier noch der Quellcode für die Spieleklasse und den Spielehelfer:
Zu Beginn haben wir die Aufgabe mit einem Array gelöst, aber es gab einen Bug (Es wurde immer Treffer angezeigt, obwohl man den gleichen Zellort schon einmal getroffen hat). Deshalb sollte man die Aufgabe nun mit einer ArrayList lösen. Dazu sollte man lediglich die (Einfaches)-DotCom Klasse umschreiben.
Zuvor mit Array:
Code:
public class EinfachesDotCom {
int[] zellorte;
int anzahlTreffer;
public void setZellorte(int[] orte) {
zellorte = orte;
}
public String prüfDich(String stringTipp) {
int tipp = Integer.parseInt(stringTipp);
String ergebnis = "Vorbei";
for (int zelle : zellorte) {
if (tipp == zelle) {
ergebnis = "Treffer";
anzahlTreffer++;
break;
}
}
if (anzahlTreffer == zellorte.length) {
ergebnis = "Versenkt";
}
System.out.println(ergebnis);
return ergebnis;
}
}
Code:
import java.util.ArrayList;
public class DotCom
{
private ArrayList<String> zellorte;
public void setZellorte(ArrayList<String> orte) {
zellorte = orte;
}
public String prüfDich(String benutzerEingabe) {
String ergebnis = "Vorbei";
int index = zellorte.indexOf(benutzerEingabe);
if(index>=0) {
zellorte.remove(index);
if(zellorte.isEmpty()) {
ergebnis = "Versenkt";
} else {
ergebnis= "Treffer";
}
}
System.out.println(ergebnis);
return ergebnis;
}
}
Code:
DotComSpiel.java:10:14: setZellorte(java.util.ArrayList<java.lang.String>) in DotCom cannot be applied to (int[])
dasDotCom.setZellorte(orte);
Hier noch der Quellcode für die Spieleklasse und den Spielehelfer:
Code:
import java.util.ArrayList;
public class DotComSpiel {
public static void main(String[] args) {
int anzahlTipps =0;
SpielHelfer helfer = new SpielHelfer();
DotCom dasDotCom = new DotCom();
int zufallsZahl = (int) (Math.random() *5);
int[] orte = {zufallsZahl, zufallsZahl+1,zufallsZahl+2};
[COLOR=red]dasDotCom.setZellorte(orte); boolean lebt=true;
while(lebt==true) {
String tipp = helfer.getBenutzereingabe("Geben sie eine Zahl ein");
String ergebnis = dasDotCom.prüfDich(tipp);
anzahlTipps++;
if(ergebnis.equals("Versenkt")) {
lebt=false;
System.out.println("Sie haben " +anzahlTipps + " Versuche benötigt");
}
}
}
}
Code:
import java.io.*;
public class SpielHelfer {
public String getBenutzereingabe(String prompt) {
String eingabeZeile=null;
System.out.print(prompt + " ");
try {
BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
eingabeZeile = is.readLine();
if(eingabeZeile.length() == 0) return null;
}
catch(IOException e) {
System.out.println("IOException: " +e);
}
return eingabeZeile;
}
}
Zuletzt bearbeitet: