Olá a todos, sou iniciante na programação e to dando uma estudada no java.
Na verdade acho q minha dúvida é tão boba q tenho até um pouco de vergonha de perguntar =p
Mas vamos lá...
O seguinte programa dá erro:
inti=-1;for(inti=0; i < 10; i++)
{
System.out.println("olá!");
}
System.out.println(i);
A variável i dentro dos parâmetros do for não é uma variável local ao mesmo?
O que me impede de ter outra variável i fora do for?
Nada. Esse programa não dá erro. Pelo menos, não por isso.
C
cake
Desculpa, declarei o i no lugar errado, pode olhar outra vez?
Agradeço desde já.
marcelo.bellissimo
Agora sim vai dar erro porque você tem uma variável ‘i’ criada com escopo local… vai dar conflito com a variável do ‘for’ …
ViniGodoy
cake:
Desculpa, declarei o i no lugar errado, pode olhar outra vez?
Agradeço desde já.
Agora acontece o seguinte. O seu i de cima existe desde o ponto onde foi declarado, inclusive dentro do for.
Mas no for você está tentando criar um segundo i. E aí está o erro.
O escopo daquele i da linha 1 é mais geral. Veja:
inta=10; for(inti=0; i < 10; i++)
{System.out.println("Olá "+i+" "+a); //ok, a existe dentro do for.
}System.out.println(a); System.out.println(i); //Ops, i não existe aqui, só dentro do for.
G
guialeixo
da erro por que você ja tinha declarado a variavel i dai ela é global daquela forma, mas se voce fizer isso no
for(i=0; i < 10; i++)
nao vai da erro pois você nao esta declarando novamente a variavel sim modificando o valor dela
C
cake
Então eu não posso declarar variáveis de mesmo nome em blocos diferentes?
a) Em C não se pode declarar diretamente uma variávei na primeira parte do for (mas em C++ isso é possível).
b) Em C++, se você declarar “for (int i” do jeito que você tentou fazer em Java, vai ter exatamente o mesmo erro.
Z111
Apesar das estruturas apresentarem semelhanças, o escopo não é o mesmo do C.
Neste caso, ambas as variáveis são consideradas locais, então não podem ser declaradas 2x.
Vingdel
Isso:
[color=red](errado)[/color]
inti=1;for(inti=0; i < 10; i++){//...
}//Seriai=1
É diferente disso:
[color=green](certo)[/color]
inti=0;for(i=0; i < 10; i++){//...
}//i=10
Que é diferente disso:
[color=green](certo)[/color]
// "int i" não existe aindafor(inti=0;i<10;i++){//...}// "int i" não existe mais
Caso 1: Errado pois cria-se uma variável que já existe;
Caso 2: Certo, pois dentro do for apenas é atribuido um valor a uma variável que já existe;
Caso 3: Certo pois a variável em questão está sendo criada e recebendo um valor dentro do for.