Schiffe verstecken

Nick3243

Mitglied
Hallo Zusammen!
Wir haben heute an der Uni folgende Aufgabe bekommen:
"Verstecken Sie vier Schiffe! Dazu legen Sie zwei Arrays an, die die X- und die Y-Koordinate der
Schiffe darstellen.
final int SCHIFFE = 4;
int[] schiffx = new int[SCHIFFE];
int[] schiffy = new int[SCHIFFE];
Positionieren Sie die vier Schiffe im Bermudadreieck. Wie Sie sicher wissen, liegt die XKoordinate
des Bermudadreiecks zwischen 0 und 9 und die Y-Koordinate zwischen 0 und 7. Das
Programm soll dafür sorgen, dass keine zwei Schiffe auf der gleichen Position sind.
Geben Sie zu guter Letzt die Positionen der Schiffe auf dem Bildschirm aus."

Hier erst einmal mein Code:
Java:
public class Test {
    public static void main(String[] args) {

        final int SCHIFFE = 4;
        int summaro = 0;

        int[] schiffx = new int[SCHIFFE];
        int[] schiffy = new int[SCHIFFE];
       
        //X-Koordinaten von 0-9, Y-Koordinaten von 0-7
        int[][] bermuda = new int[10][8];

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 8; j++) {
                bermuda[i][j] = 0;
            }
        }

        //*****Hier komme ich nicht weiter*****\\
        while (summaro < 4) {
           
            for (int i = 0; i < schiffx.length; i++) {
                for (int j = 0; j < schiffy.length; j++) {
                    bermuda[i][j] = 4;
                }
            }
            summaro++;
        }
        //**************************************\\
       
        for (int[] zeile : bermuda) {
            for (int feld : zeile) {
                System.out.print(" " + feld);
            }
            System.out.println();
        }

    }

}

Das Ergebnis sieht wie folgt aus:
4 4 4 4 0 0 0 0
4 4 4 4 0 0 0 0
4 4 4 4 0 0 0 0
4 4 4 4 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0

Das Feld aus den 4. ist eines der Schiffe. Die anderen Schiffe sollten über die while Schleife erzeugt werden, ich habe nur leider keinerlei Ahnung, wie ich die Schiffe Random in dem Feld platziere.

Leider stelle ich mich da echt ein wenig doof an, ich hoffe man kann mir hier helfen :)

Vielen Dank!
 

Nick3243

Mitglied
Danke für den Link! Habe mir den Thread mal durch gelesen, leider wurde da die Aufgabe, bei welcher ich momentan hänge, noch nicht gelöst.
Was ist an den for-Schleifen nicht korrekt?
Wenn x = 11 ist, dann müsste es doch von 0-10 gehen? dasselbe bei y, dieses müsste laut deiner Antwort doch von 0-8 gehen. Die Wertebereiche gehen aber nur von 0-9, bzw. 0-7, ergo sind diese 10, bzw. 8 Stellen lang?

Java:
public class Werte {
  
    public static void main(String[] args) {
      
        int[] array = new int[11];
      
        for (int i = 0; i < array.length; i++) {
            array[i] = i;
            System.out.println(array[i]);
        }
      
    }

}

//result: 0 1 2 3 4 5 6 7 8 9 10

Im Endeffekt muss ich ja nur noch die 4 Schiffe Random auf dem Feld platzieren, ohne dass diese sich überschneiden. Das ist halt leider auch das Problem, ich habe keine Ahnung wie das gehen soll.
 

Javinner

Top Contributor
Wenn x = 11 ist, dann müsste es doch von 0-10 gehen? dasselbe bei y, dieses müsste laut deiner Antwort doch von 0-8 gehen. Die Wertebereiche gehen aber nur von 0-9, bzw. 0-7, ergo sind diese 10, bzw. 8 Stellen lang?
Ich rudere zurück, hast recht, das ist richtig so.
Was ist an den for-Schleifen nicht korrekt?
Du vertauschst die Werte:
Java:
//Dein Code
0 1 2 3 4 5 6 7
1 . . . . . . .
2 . . . . . . .
3 . . . . . . .
4 . . . . . . .
5 . . . . . . .
6 . . . . . . .
7 . . . . . . .
8 . . . . . . .
9 . . . . . . .
Java:
//So soll es aber sein
0 1 2 3 4 5 6 7 8 9
1 . . . . . . . . .
2 . . . . . . . . .
3 . . . . . . . . .
4 . . . . . . . . .
5 . . . . . . . . .
6 . . . . . . . . .
7 . . . . . . . . .
 
Zuletzt bearbeitet:

Javinner

Top Contributor
Habe Gestern das Programm geschrieben und eins ist mir aufgefallen:
Problembeschreibung: es wird keine Null sowohl in x noch in y herausgegeben.
Java:
Schiff s = new Schiff(10, 8);
//Anhand der Parameterliste belade ich das jeweilige
//ArrayX und ArrayY mit Zufallszahlen

private int getZahl(int zahl)
{
    Random ran = new Random();
    int i = ran.nextInt(zahl);/** So sollte doch Null miteinbezogen sein, oder?*/
    return i;
}
//Es kommt jedoch nie eine X== 0 und/oder Y== 0
X: 1 Y: 2
X: 7 Y: 4
X: 8 Y: 5
X: 9 Y: 7
. . . . . . . . . .
. . . . . . . . . .
. x . . . . . . . .
. . . . . . . . . .
. . . . . . . x . .
. . . . . . . . x .
. . . . . . . . . .
. . . . . . . . . x
/** was uebersehe ich?*/
Java:
public class SchiffeVersenken
{

    public static void main(String[] args)
    {
        SchiffsWerft sw = new SchiffsWerft(10, 8);
        ArrayLoader ar = new ArrayLoader();
        int feld = 4;

        int[] schiffx = ar.arrayLoader(feld, sw.getBreite());
        int[] schiffy = ar.arrayLoader(feld, sw.getHoehe());
        for(int i = 0; i < schiffx.length; i++)
        {
            System.out.println("X: " + schiffx[i] + " Y: " + schiffy[i]);
        }
        sw.buildField(schiffx, schiffy);
    }

}
 
Zuletzt bearbeitet:

Javinner

Top Contributor
Wie hast du das Programm bis jetzt gelöst? Was hast du bis jetzt?
Meins ist flexibel gestaltet. Also lassen sich bedingt die Werte ändern und bis
auf das Problem läuft es.
Java:
SchiffsWerft sw = new SchiffsWerft(20, 15);
ArrayLoader ar = new ArrayLoader();
int feld = 10;

X: 12 Y: 9
X: 7 Y: 3
X: 9 Y: 11
X: 5 Y: 7
X: 2 Y: 2
X: 16 Y: 8
X: 13 Y: 1
X: 6 Y: 12
X: 11 Y: 5
X: 10 Y: 13
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . x . . . . . .
. . x . . . . . . . . . . . . . . . . .
. . . . . . . x . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . x . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . x . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . x . . .
. . . . . . . . . . . . x . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . x . . . . . . . . . .
. . . . . . x . . . . . . . . . . . . .
. . . . . . . . . . x . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
kevkev Hilfe bei Schiffe versenken Java Basics - Anfänger-Themen 5
S Schiffe versenken - Zufallszahlen in einem Array Java Basics - Anfänger-Themen 6
G Wie funktioniert das? > Schiffe versenken Java Basics - Anfänger-Themen 13
M Java Schiffe versenken - Positionierung Java Basics - Anfänger-Themen 3
D Erste Schritte Schiffe versenken Java Basics - Anfänger-Themen 11
M "illegal start of type" eindimensionales Schiffe versenken Java Basics - Anfänger-Themen 7
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
J Ein Grafisches Gitternetz (für Schiffe versenken) darstellen - Wie? Java Basics - Anfänger-Themen 6
L Schiffe versenken Java Basics - Anfänger-Themen 7
N Java Einstieg Schiffe versenken Java Basics - Anfänger-Themen 4
P Spiel im Schiffe-Versenken Stil, Problem mit Erstellung des zweidimensionalen ARRAYs Java Basics - Anfänger-Themen 7
I Schiffe versenken Java Basics - Anfänger-Themen 3
I Schiffe versenken, Netzwerk, swing, Thread Java Basics - Anfänger-Themen 5
T Schiffe versenken Java Basics - Anfänger-Themen 10
J Schiffe Versenken Java Basics - Anfänger-Themen 11
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
Da_Tebe Passwörter verstecken Java Basics - Anfänger-Themen 6
F Vererbung Geerbte Methode verstecken? Java Basics - Anfänger-Themen 23
FetterOtter Datei verstecken Java Basics - Anfänger-Themen 12
K Datenbindung an JTable, JList, Primärschlüssel verstecken Java Basics - Anfänger-Themen 4
G getControlPanelComponent JMF Buttons verstecken? Java Basics - Anfänger-Themen 7
G leere columns "verstecken" Java Basics - Anfänger-Themen 5
D Button verstecken Java Basics - Anfänger-Themen 2
J 2 Felder aus DB selektieren u. in JList - eines verstecken? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben