void bark(int numofBarks) —> Sei que assim esta certo, mas olha o segunda, Só quero saber o porque de não poder usar como o segundo
{
while (numofBarks > 0)
{
System.out.println(“Ruff”);
numofBarks = numofBarks - 1;
}
}
}
class DogTestDrive
{
public static void main (String args[])
{
DogD dog = new DogD();
dog.bark(3);
}
}[/code]
[code]public class DogD
{
void bark()
{
int numofBarks; ------------------> Porque não posso fazer isso???
while (numofBarks > 0)
{
System.out.println(“Ruff”);
numofBarks = numofBarks - 1;
}
}
}
class DogTestDrive
{
public static void main (String args[])
{
DogD dog = new DogD();
dog.bark(3);
}
}[/code]
Por que eu não posso fazer o segundo codigo do jeito que ta aí em cima, o primeiro sei que ta certo, mas porque não posso fazer o segundo desse modo?
pq vc não está recebendo nenhum parametro no método bark().
O compilador não tem como saber o que vc passou pro método no main é a variável numofBarks.
e vc é opbrigado a inicializar as variáveis de um método antes de utilizar elas…
void bark()
{
int numofBarks = 3; // vc tem que inicializar a variável.
//use um for quando vc souber o número de iterações.
for (int i = 0; i < numofBarks; i++)
System.out.println("Ruff");
}
Você está confundindo parâmetros com variáveis locais. Eles são coisas diferentes.
Parâmetro - algo que você passa para um método
Variável local - algo que um método usa internamente.
Por acaso você aprendeu C antes (usando a sintaxe antiga do Kerninghan e Ritchie? ) Em C antigo (que os compiladores não aceitam mais) existe uma coisa que acho terrivelmente confusa. Veja a diferença:
// Em C antigo, note que os parâmetros são declarados separadamente do tipo dos parâmetros,
// e que podem ficar fora de ordem:
main (argc, argv)
char *argv[],
int argc;
{
}
e
// No C moderno, os parâmetros são declarados na lista de parâmetros, como em Java:
int main (int argc, char *argv[])
{
}
O primeiro caso vc esta dizendo que o metodo vai receber um int como parametro, por isso funciona
No segundo caso vc está criando uma variavel local dentro do metodo, entao vc precisa inicializar ela com algum valor inteiro.