JAVA Stringbuilder

0

Witam serdecznie. Ostatnio piszę program na zajęcia z programowania Javy na uczelnie i mam problem ponieważ nie potrafię zapisać wyniku metody preetyPrint jako stringa. Potrzebuję to zrobić ponieważ return metody getGameState musi zwracać ciąg znaków przedstawiający stan gry. Domniemam że muszę użyć Stringbuildera jednak nie potrafię tego zrobić. Oto kilka metod dla zrozumienia.

private String[][] initBoard() {
String[][] startBoard = new String[9][9];

    startBoard[0] = new String[]{"8", bChar, bChar, bChar, bChar, bChar, bChar, bChar, bChar};
    for (int i = 0; i < 6; i++) {
        startBoard[i + 1] = new String[]{valueOf(7 - i), eChar, eChar, eChar, eChar, eChar, eChar, eChar, eChar};
    }
    startBoard[7] = new String[]{"1", wChar, wChar, wChar, wChar, wChar, wChar, wChar, wChar};
    startBoard[8] = new String[]{" ", "a", "b", "c", "d", "e", "f", "g", "h"};
    return startBoard;
}

private void preetyPrint(String[][] board) {
    for (int i = 0; i < 9; i++) {
        System.out.println(Stream.of(board[i]).collect(Collectors.joining("")));
    }
}

@Override
public String getGameState(int game, int move) {
String[][] gameBoard = initBoard();
for(int i =1;i <=move; i++) {
try {
ResultSet resultSet = statement.executeQuery(String.format(QUERY, game, i));
String startField = resultSet.getString(START);
int sFR = 8 - Integer.parseInt(startField.substring(1));
int sFC = Character.getNumericValue(startField.charAt(0)) - 9;

            String endField = resultSet.getString(END);
            int eFR = 8 - Integer.parseInt(endField.substring(1));
            int eFC = Character.getNumericValue(endField.charAt(0)) - 9;
            gameBoard[eFR][eFC] = gameBoard[sFR][sFC];
            gameBoard[sFR][sFC] = eChar;


        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    preetyPrint(gameBoard);
    return "";//fixme
}</code></code>
0

Napisz post jeszcze raz, użyj poprawnie tagów do oznaczania kodu.

0
private String[][] initBoard() {
        String[][] startBoard = new String[9][9];

        startBoard[0] = new String[]{"8", bChar, bChar, bChar, bChar, bChar, bChar, bChar, bChar};
        for (int i = 0; i < 6; i++) {
            startBoard[i + 1] = new String[]{valueOf(7 - i), eChar, eChar, eChar, eChar, eChar, eChar, eChar, eChar};
        }
        startBoard[7] = new String[]{"1", wChar, wChar, wChar, wChar, wChar, wChar, wChar, wChar};
        startBoard[8] = new String[]{" ", "a", "b", "c", "d", "e", "f", "g", "h"};
        return startBoard;
    }

    private void preetyPrint(String[][] board) {
        for (int i = 0; i < 9; i++) {
            System.out.println(Stream.of(board[i]).collect(Collectors.joining("")));
        }
    }
@Override
    public String getGameState(int game, int move) {
        String[][] gameBoard = initBoard();
        for(int i =1;i <=move; i++) {
            try {
                ResultSet resultSet = statement.executeQuery(String.format(QUERY, game, i));
                String startField = resultSet.getString(START);
                int sFR = 8 - Integer.parseInt(startField.substring(1));
                int sFC = Character.getNumericValue(startField.charAt(0)) - 9;


                String endField = resultSet.getString(END);
                int eFR = 8 - Integer.parseInt(endField.substring(1));
                int eFC = Character.getNumericValue(endField.charAt(0)) - 9;
                gameBoard[eFR][eFC] = gameBoard[sFR][sFC];
                gameBoard[sFR][sFC] = eChar;


            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        preetyPrint(gameBoard);
        return "";//fixme

    }
1

Możesz na przykład zrobić to tak (uwaga, metoda zwraca teraz String!)

 private String preetyPrint(String[][] board) {
     StringBuilder builder = new StringBuilder();
     for(String[] innerArray : board) {
           for(String field : innerArray) {
               builder.append(field);
          }
     }
     return builder.toString();
 }
0

Fajnie pokazałeś jak użyć StringBildera ale chodzi mi bardziej o to aby metoda getGameState zwracała rozwiązanie metody preetyPrint (w postaci stringa).

1

Zamień teraz po prostu końcówkę metody getGameState z

 preetyPrint(gameBoard);
        return "";//fixme
return preetyPrint(gameBoard);

:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1