Jump to content

Problema com constructor para multiarray


Fest
 Share

Recommended Posts

olá eu sou novo aqui e em java (comecei neste início de ano) bem como a qualquer tipo de programação. O meu problema tem haver com um trabalho que apesar e não ser para minha avaliação supostamente segundo o meu professor vai ajudar para avaliações futuras, por isso se não quiserem ajudar pk devia ser eu por mim a fazer eu percebo e peço que não me atirem isso à cara porque já é mt mau eu andar muito tempo (vai fazer hoje 3 dias) que tou a tentar fazer isto e não consigo.

O meu professor deu nos duas classes;

1)

public class BoardTester {

public static void main(String[] args) {

	char[][] config = {
			{'~','~','2','2','~'},
			{'~','1','~','~','~'},
			{'~','~','3','~','2'},
			{'~','~','3','~','2'}
	};		
	Board board1 = new Board(config); // a)

	System.out.println(board1); // b)

	System.out.println();		


	char[][] state = {
			{'.','.','.','.','.','.','.','.','.','.'},
			{'.','.','.','.','.','.','.','.','.','.'},
			{'.','~','~','~','.','~','.','.','.','.'},
			{'.','.','.','.','.','X','.','.','.','.'},
			{'.','.','.','X','.','.','.','.','.','.'},
			{'.','.','.','X','.','.','.','.','.','.'},
			{'.','.','.','X','.','.','.','.','.','.'},
			{'.','.','.','.','.','.','.','~','.','.'},
			{'.','.','.','.','.','.','.','.','.','.'},
			{'.','.','.','.','.','.','.','.','.','X'}
	};
	Board board2 = new Board(state); // a)

	System.out.println(board2.getBoardText()); // c)					
}
}
 

2)

import org.junit.runner.RunWith;

import pt.iscte.dcti.ip.tests.p0.BoardTest;

@RunWith(BoardTest.class)

public class Board {

}

O objectivo será:

a) A classe tem que definir um método construtor public Board(char[][] board), onde a matriz board contém o estado do tabuleiro. O primeiro índice da matriz corresponde às linhas do tabuleiro, enquanto o segundo índice da matriz corresponde às colunas do tabuleiro. Por exemplo, o seguinte pedaço de código deverá construir um tabuleiro com 7 linhas e 10 colunas:

char[][] boardContent = new char[7][10];

Board board = new Board(boardContent);

b) A classe tem que definir um método public String toString() , o qual devolve uma String que representa textualmente o conteúdo do tabuleiro de acordo com a Figura 3 do enunciado do TF. Para um tabuleiro de 7 x 10 o método devolveria, por exemplo:

~ X ~ . . ~ . . . .

. . . . . X . . . .

. . . . . X . . . .

. . . . . . ~ . . .

. . . . . . X . . .

. . . . . . ~ . . .

. . . . . . . . . .

Nota: Para incluir uma mudança de linha numa String concatene um separador (em Windows será igual a"\r\n", em Linux apenas "\n"), como no exemplo seguinte:

String separator = System.getProperty("line.separator");

String s = ". . ." + separator + ". X ." + separator + ". . ." ;

System.out.println(s);

c) A classe tem que definir um método public String getBoardText(), que devolve uma String que representa textualmente o tabuleiro de acordo com a interface apresentada na Figura 1 do enunciado do TF. Por exemplo, para o tabuleiro apresentado no ponto anterior, o método devolveria:

1 2 3 4 5 6 7 8 9 10

A ~ X ~ . . ~ . . . .

B . . . . . X . . . .

C . . . . . X . . . .

D . . . . . . ~ . . .

E . . . . . . X . . .

F . . . . . . ~ . . .

G . . . . . . . . . .

Em conjunto com o enunciado é fornecido um teste (BoardTester.java) que deve usar para verificar se o seu programa está a funcionar correctamente. Pode ainda, com a classe Board.java no editor central, seleccionar a janela do editor com o botão direito do rato e fazer Run As/JUnit Test para obter um relatório de alguns dos testes que serão usados na correcção do trabalho (poderão ser acrescentados outros testes).

Peço que pelo menos me ajudem a fazer o a) pois eu quero ver se consigo fazer o b) e c) por mim

Peço também desculpa pelo tamanho disto e agradeço imenso a todos os que se derem ao trabalho de ler e agradeço ainda mais a quem se der também ao trabalho de me responder,

Link to comment
Share on other sites

olá, provavelmente ainda ninguem respondeu porque pronto XD, sou eu que tenho de fazer. Acontece que eu andei a tentar e a procurar na net coisas e escrevi a segunda uma resposta para a segunda classe, axu k funciona(pelo menos quando corro ele mostra as matrizes da primeira classe mas com coisas que eu não conheço)

Aqui tá a classe 2 com coisas que eu escrevi:

import org.junit.runner.RunWith;


/*@RunWith(BoardTest.class)*/
public class Board {

private int l;
private int c;

public Board(char[][] board) {
	for(int i = 0; i != board.length; i++){
		System.out.println();
		for(int j = 0; j != board[i].length; j++){
			System.out.print(board[i][j] + " ");
		}
	}
	System.out.println();

	// TODO Auto-generated constructor stub
}
//n liguem a partir daki pk é para o resto do problema i eu ainda tou a pensar como fazer
public String toString()

public char[] getBoardText() {
	// TODO Auto-generated method stub
	return null;
}
}

O que eu obtenho quando corro isto é:

~ ~ 2 2 ~

~ 1 ~ ~ ~

~ ~ 3 ~ 2

~ ~ 3 ~ 2

Board@19821f

. . . . . . . . . .

. . . . . . . . . .

. ~ ~ ~ . ~ . . . .

. . . . . X . . . .

. . . X . . . . . .

. . . X . . . . . .

. . . X . . . . . .

. . . . . . . ~ . .

. . . . . . . . . .

. . . . . . . . . X

Exception in thread "main" java.lang.NullPointerException

at java.io.Writer.write(Unknown Source)

at java.io.PrintStream.write(Unknown Source)

at java.io.PrintStream.print(Unknown Source)

at java.io.PrintStream.println(Unknown Source)

at BoardTester.main(BoardTester.java:32)

Agradecia muito que m pudessem explicar o que é Board@19821f e pk recebo um exception in thread "main"java.lang.nullPointerException

mais uma vez agradeço a kerm ker k se de ao trabalho de simplesmente olhar pa isto i ainda mais a kem m puder ajudar nem k seja so com dicas,

Link to comment
Share on other sites

Em System.out.println(board1); a aplicação não sabe como converter o board1 para uma string, de modo a que  possa imprimir no ecrã o conteúdo da variável. Em princípio, basta implementares o método toString na classe Board e tens esse problema resolvido.

Já agora, evita meter aqui enunciados de problemas/trabalhos enormes. Se colocares apenas dúvidas concretas (mais pequenas), aumentas a probabilidade de obteres ajuda.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.