2014-10-12 2 views
0

Так что в основном я пытаюсь создать сетку 9x9 для игры в тральщик. Мне нужно, чтобы сетка была заполнена вопросительными знаками для представления минного поля, которое еще не выбрано. Ex: [?] [?] [?] [?] [?] В основном, мой вопрос в том, как я могу заставить свою программу выводить массив вопросительных знаков?Java 2D массив сетки

import java.util.Scanner; 
import java.util.Arrays; 

public class H4_Minesweeper { 

    public static void main(String[] args) { 
     //Game Description and rules 
     System.out.println("Minesweeper is a very straightforward game, the rules are simple."); 
     System.out.println("Uncover a mine (x), and the game ends. Uncover an empty square (o), and you keep playing."); 
     System.out.println("A question mark (?) will represent tiles you have not uncovered yet."); 
     System.out.println("Uncover a number, and it tells you how many mines lay hidden in the eight surrounding squares."); 
     System.out.println("Use this information to carefully choose which squares to click."); 
     System.out.println("\n\n\n"); 

     Scanner userin; 


     String[][] board = new String [9][9]; 
     for (int r = 0; r<board.length;r++){ 
      for (int c = 0; c <board.length;c++){ 

      } 
     } 
    } 
}  
+0

имеет свой 2d массив уже заполнены? есть ли какая-то причина, по которой вы хотите получить ожидаемый результат? это будет всегда 5? –

+0

Нет, извините, я должен был упомянуть об этом. Я совершенно не знаком с массивами, и у меня возникают трудности с выяснением его основы. – DJM4

+0

Мне нужны вопросительные знаки для представления невыбранных полей в сетке 9x9. После этого у меня будет пользовательский ввод, чтобы выбрать поле, которое они хотят открыть. Пять в моем первоначальном вопросе были просто примером того, как получить представление о том, как начнет выглядеть сетка. – DJM4

ответ

0

Это должно быть сделано.

for (int r = 0; r<board.length;r++){ 
    for (int c = 0; c <board.length;c++){ 
     board[r][c] = "?"; // Initialize the cell 
     System.out.print("[" +board[r][c] + "]"); // Display the content of cell board 
    } 
    System.out.println(); // go to next line 
} 
1

Во-первых, вы должны инициализировать массив, установив все его элементы в "?":

String[][] board = new String [9][9]; 
for (int r = 0; r<board.length;r++){ 
    for (int c = 0; c <board.length;c++){ 
     board[r][c] = "?"; 
    } 
} 

Затем вы можете распечатать его:

for (int r = 0; r<board.length;r++){ 
    for (int c = 0; c <board.length;c++){ 
     System.out.print (board[r][c] + " "); 
    } 
    System.out.println(); 
} 
+0

Я думаю, вы не должны переопределять 'board' для печати: D. – Tom

+0

@ Тома действительно. Ошибка копирования-вставки :-) – Mureinik

0

Заполните 2d массив со строкой " ?» для каждого из сетки пространств, а затем идти по строкам распечатывания значения каждого индекса массива

Заполнение массива:

String[][] board = new String[9][9]; 

for(int y=0;y<9;y++){ 
    for(int x=0;x<9;x++){ 
     board[x][y] = "?"; 
    } 
} 

Отображение строки:

for (int r = 0; r<9;r++){ 
    String line = ""; 
    for (int c = 0; c <9;c++){ 
     line+="["+board[c][r]+"]"; 
    } 
    System.out.println(line); 
} 
+2

Вы можете использовать 'StringBuilder', чтобы избежать конкатенации. – Tom

+0

@Tom Почему я хочу избежать конкатенации ... Использование Stringbuilder никоим образом не улучшает скорость во время выполнения ... Также это проще понять и меньше набирать текст – TheJavaCoder16

Смежные вопросы