2016-11-14 5 views
0

私の学校では、私たちは「バトルシップの完璧なゲーム」をコーディングすることを任されています。これを行うために、ファイル、ships.txtが与えられます。このファイルは、スキャンしてA、P、B、S、Cのいずれかの船を探して、その場所をプリントアウトする必要があります。これは、ファイル(10×10)である:ファイルスキャナが行間をスキップ

(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) 

問題はEclipseの版画ということです:私は答えがあることを知っている

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); 

       } 
      } 
     } 
    } 
} 

:ここ

..CCC..... 
.......... 
...A.....B 
...A.SSS.B 
...A.....B 
...A...... 
.......... 
.......PP. 
.......... 
.......... 

私が持っているコードです。アウト:

(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) 

私の最高の推測はtですスキャナが5行目をスキップしていますが、私の人生のために、それを修正する理由や方法を理解できません。誰かが助けてくれますか?コードを少し微調整して

+0

予想される出力を再度確認してください。そして、あなたのコードは** 0ベースの**(ループインデックス)で動作することを覚えておいてください! – Paul

+1

プログラムが正しい座標を印刷しています。あなたが「知っている」答えは間違っています。 – Joe

+0

それはほぼ正しいですが、1)17の船があり、2)パトロールボート(PP)が第8列にあり、最後に3)0が第1列ですと列。 – Jason

答えて

0

import java.util.Scanner; 
import java.io.*; 
public class BattleShip{ 
    public static void main(String[] args)throws IOException{ 
     Scanner fileScanner= new Scanner(new File("ships.txt")); 
     String line; 

     for(int row = 0; row < 10; row++){ 
      line = fileScanner.nextLine() + " "; 

      for(int column = 0; column < 10; column++){ 

       boolean isShip = line.substring(column, column + 1).equalsIgnoreCase("."); 

       if(isShip == false){ 
        System.out.print(row + "," + column + "\t"); 
       } 
       else{ 
        System.out.print(".\t"); 
       } 
      } 
      System.out.println(""); 
     } 
     fileScanner.close(); 
    } 
} 

あなたは次のような出力を得るだろう:それはちょうど、いくつかの改行、ドットとタブを追加し、基本的には同じコード・ロジックだ

. . 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 . 
. . . . . . . . . . 
. . . . . . . . . . 

をここを見れば見た目がはっきりしています。

明らかに、出力は正しいものであり、行はスキップされていません。

あなたの回答は間違っているように見えます:p

関連する問題