Limitado por limitado, declarar as variáveis dentro do laço (exceto o indice padrão) te limitará do mesmo jeito, independentemente do tipo (int, double, float, etc) concorda?
Se você está pensando em declarar mais de uma variável dentro do for, está pensando em criar um código confuso, sujeito a erros e, portanto, pensando em fazer kgada.
Em programação, nem sempre o que você pode fazer é o que você deve fazer.
Cara se for o caso: as vezes é usado um for dentro de outro. Mas sinceramente é a primeira vez que vi alguém tentando fazer isso.
Sem contar que se algum dia alguém pegar essa código para altera-lo vishhhhh complicou.
Quanto mais limpo e sucinto o código melhor.
É bem diferente criar 2 variáveis num for e criar um for dentro de outro. Geralmente, 2 variáveis funciona como se vc tivesse declarado uma variável fora do for, e em seguida, a adicionasse dentro.
Costumo declarar 2 variáveis no for, quando a condição de parada do for é lenta para ser calculada. Por exemplo:
NodeList nodeList = ...;
for (int i = 0, n = nodeList.getLength(); i < n; i++) {
Node node = nodeList.item (i);
...
}
Neste caso não sei se getLength() no caso da classe que implementa org.w3c.dom.NodeList é lenta ou rápida. Para evitar chamar getLength a cada iteração do loop, eu uso a construção acima para chamar getLength() apenas uma vez.
O que vc quer fazer não é uma iteração. Não é um for. É uma repetição (um while)
int var1 = 10;
int var2 = 100;
while (var1 < var2 ){
var1++;
var2--;
}
Para que isto serve ? Não importa, mas o que vc está fazendo é saber onde var1 e var 2 convergem. Na realidade vc está calculando var2-var1 da forma mais dificil.
E é por isso que a sintaxe não aguenta. Vc não está usando os conceitos corretos.
Isso é bem interessante. De qualquer forma, seu controle está sempre sobre uma variável só, não em cima de duas… quando aparece mais de um contador é que as coisas ficam tenebrosas.
[quote=entanglement]Costumo declarar 2 variáveis no for, quando a condição de parada do for é lenta para ser calculada. Por exemplo:
NodeList nodeList = ...;
for (int i = 0, n = nodeList.getLength(); i < n; i++) {
Node node = nodeList.item (i);
...
}
Neste caso não sei se getLength() no caso da classe que implementa org.w3c.dom.NodeList é lenta ou rápida. Para evitar chamar getLength a cada iteração do loop, eu uso a construção acima para chamar getLength() apenas uma vez.[/quote]
Para evitar chamar o método a cada iteração … você não chama! ora…
NodeList nodeList = ...;
final int size = nodeList.getLength();
for (int i = 0; i < size; i++) {
Node node = nodeList.item (i);
...
}
Pronto. É a mesma coisas. Mas é mais fácil de ler. Sem subterfúgios linguísticos sinistros e usando final vc deixa claro que é uma variável auxiliar ( e que não mudará duante o for, o que é importante)