Ta certou ou errado

[code]public class DotCom
{
int[] locationCells; ------> Aqui é os atributos???
int numOfHits = 0;

public void setLocationCells(int[] locs) ------> Esse int[] locs é uma variavel temporaria usada apenas nesse metodo????????
{
	locationCells = locs;
}
public String checkYourself(String stringGuess) ----> Esse String stringGuess é uma variavel temporaria usada apenas nesse metodo????????
{
	int guess = Integer.parseInt(stringGuess);
	String result = "miss";
	for (int cell : locationCells)
	{
		if (guess == cell)
		{
			result = "hit";
			numOfHits++;
			break;
		}
	}//fora do loop

if (numOfHits == locationCells.length)
{
	result = "Kill";
}
System.out.println(result); 
	return result;
}

}[/code]

public void setLocationCells(int[] locs) ------> Esse int[] locs é uma variavel temporaria usada apenas nesse metodo???

public String checkYourself(String stringGuess) ----> Esse String stringGuess é uma variavel temporaria usada apenas nesse metodo???

Eu só posso declarar essas variaveis aí??? ou porque tenho que declarar essas variaveis aí?

Da uma olhada sobre Orientação a Objetos…
Ai você irá entender, ou melhor, começe aprendendo pascal… estes métodos são quase uma função no pascal.

www.caelum.com.br tem umas apostilas boas ai!

Na verdade são parâmetros do método. Quando este for invocado em qualquer ponto do código vai ter que receber os parâmetros conforme definido na assinatura do método.

Depende do objetivo. Se você quizer criar parâmetros, tem que declará-los aí. Caso queira criar variáveis para serem manipuladas durante o método, precisa criá-los dentro do método.

Só um detalhe, esse método tem um erro grave:

public void setLocationCells(int[] locs) { locationCells = locs; }

O correto teria de ser assim:

public void setLocationCells(int[] locs) { locationCells = Arrays.copyOf(locs); }

Grande ViniGodoy, nem havia percebido… :lol:

[quote] ViniGodoy
O correto teria de ser assim:

public void setLocationCells(int[] locs) {  
         locationCells = Arrays.copyOf(locs);  
}

[/quote]

Pq, ViniGodoy?

Eu sei que a pergunta foi para o Vini, mas vou me meter mesmo assim :lol:
Como você deve saber, em Java quando você passa um objeto como parâmetro, o método na verdade passa a ter uma referência para o objeto que recebeu como parâmetro. Ou seja, a variável “aponta” para o mesmo objeto.
No exemplo, a variável da classe apontaria para o array que recebeu como parâmetro, que pode estar sendo manipulado por outras classes.
Para que o atributo da classe aponte para um novo objeto, que será controlado exclusivamente por esta classe, é efetuada a cópia do array.

David, quanto à isso, tranqüilo.
Mas não vejo porque isso seria um erro grave… E se a intenção for exatamente esta?

Valeu, fera.
Abraço

[quote=faicoxim]public void setLocationCells(int[] locs) ------> Esse int[] locs é uma variavel temporaria usada apenas nesse metodo???

public String checkYourself(String stringGuess) ----> Esse String stringGuess é uma variavel temporaria usada apenas nesse metodo???

Eu só posso declarar essas variaveis aí??? ou porque tenho que declarar essas variaveis aí?[/quote]

Ambos os casos eles são parâmetros para os métodos, e sim, são variáveis locais. Com estes parâmetros você define a assinatura do método, e ao passar argumentos para estes métodos, eles devem ter os mesmos tipos dos parâmetros e estarem na mesma ordem(pelo menos em Java).

Se quiser declarar outras variáveis locais mas sem serem parâmetros de método, declare-as normalmente dentro do corpo dos métodos.

Acredito que o Vini classificou como erro grave por causa dos padrões.
Quando um método com a assinatura “setLocationCells” é definido, passa a impressão de que este método irá setar atributos da classe em questão, e não “copiar” a informação já existente.
Acho que é por isso.