In meiner Schule haben wir beauftragt, ein "perfektes Spiel des Schlachtschiffes" zu kodieren. Dafür erhalten wir eine Datei, ships.txt, die wir scannen und nach Schiffen A, P, B, S oder C suchen und deren Standorte ausdrucken müssen. Dies ist die Datei (10x10):Datei-Scanner überspringt Zeile
..CCC.....
..........
...A.....B
...A.SSS.B
...A.....B
...A......
..........
.......PP.
..........
..........
Hier ist der Code, den ich habe:
import java.util.Scanner;
import java.io.*;
public class BattleShip{
public static void main(String[] args)throws IOException{
Scanner scf = new Scanner(new File("ships.txt"));
String line = "p";
for(int c = 0; c<10;c++){
line = scf.nextLine() + " ";
for(int h = 0;h<10;h++){
boolean isShip = line.substring(h,h+1).equalsIgnoreCase(".");
if(isShip == false){
System.out.println(c + "," + h);
}
}
}
}
}
Ich weiß, dass die Antworten sind:
(0,2)
(0,3)
(0,4)
(2,3)
(2,9)
(3,3)
(3,5)
(3,6)
(3,7)
(3,9)
(4,3)
(4,9)
(5,3)
(5,9)
(6,3)
(8,7)
(8,8)
Das Problem ist, dass Eclipse-Druck aus:
(0,2)
(0,3)
(0,4)
(2,3)
(2,9)
(3,3)
(3,5)
(3,6)
(3,7)
(3,9)
(4,3)
(4,9)
(5,3)
(7,7)
(7,8)
Meine beste Schätzung ist t Der Scanner überspringt die fünfte Zeile, aber für das Leben von mir kann ich nicht herausfinden, warum oder wie ich es beheben kann. Kann mir bitte jemand helfen?
Sie sollten Ihre erwartete Ausgabe überprüfen. Und denken Sie daran, Ihr Code funktioniert ** 0-basiert ** (Schleifenindizes)! – Paul
Ihr Programm druckt die richtigen Koordinaten aus. Was Sie "wissen", die Antworten sind falsch. – Joe
Es ist fast richtig, aber 1) sollte es 17 Ausgänge bc gibt es 17 Schiffe und 2) gibt es keine Schiffe in der 7. Reihe der Patrouillenboot (PP) ist in der 8. Reihe, und schließlich 3) 0 ist die erste Reihe und Spalte. – Jason