Variaveis Primitivas para um novato! (Resolvido)

10 respostas
thebadshark

Gente é o seguinte to querendo aprender, mas sabem como é to seguindo uma apostila da Caelum FJ11 - com orientacao a objetos. Estou indo até bem so que parei na parte voltada a controle de fluxo e variaveis.
Sei que para os experts isso deve ser baba mas para mim to quebrando a cabeça. O codigo a seguir é um exercicio, onde tem que fazer imprimir de 150 a 300. O javac compilou bonitinho só que nao aparece o resultado, fica lá e nada. Gostaria muito que alguém me desse uma luz. Segue abaixo o codigo do exercicio que não aparece nem resultado nem erro.

Imprima todos os números de 150 a 300.

public class Exercicio1 {

public static void main (String [] args) {

int i = 150;
while (i < 300);

System.out.println (i);
i = i ++;

}

}

Obrigado

Thebadshark

10 Respostas

kissdemon

Seu código nao possui erro mas também nao imprime nada porque nao tem mesmo que imprimir. Olhe isso:

while (i < 300);

Enquanto i < 300, faça NADA.

O System.out.println está fora do loop alem do que está gerando um loop infinito, pois o i nunca é incrementado.

[]'s

andredeividi

Na parte de imprimir 150 a 300 pode fazer assim

for(int i=150 ;i&lt=300;i++){
                System.out.println (i);
               
            }

abraço

D

Cara,

Reveja a sintaxe do código que você postou. Ao final da linha do while, vc não pode colocar o ‘;’ ! =) E sim a chave {, para iniciar um bloco de comandos, que deverá ser executado enquanto a condição for satisfeita.

E dê preferencia por i = i + 1, fica mais claro =)

Tente novamente os exercicios, e poste seus progressos =)

Um Abraço.

Fabio_Montefuscolo

Amigão, o seu exercício 1 estava certo, exceto pelo ponto e virgula depois do while . . . . while é um bloco e tem como delimitadores as chaves ( “{}”)

public class Exercicio1 {

	public static void main(String[] args) {

		int i = 150;
		while (i < 300) {

			System.out.println(i);
			i++;
		}

	}

}
silva.fernandes

Para vc visualizar os resultados ... acredito eu q vc ta tentando fazer o primeiro exercicio .. vc tem q usar o laço for ...

Ficando assim seu exercicio.

public class Exercicio1 {

	public static void main(String[] args) {

		for (int i = 150; i <= 300; i++) {
			System.out.println(i);
		}

	}

}

Bele ..

Agora tenta fazer os outros .. a medida q ir surgindo duvidas é só pergunta...

Ok

T+

thebadshark

Galera muito brigado pela tão pronta resposta.

Agora vou tentar os outros gostei do for e vou tentar utiliza-lo para os outros exercicios.

Caso tenha duvidas espero poder contar com voces novamente.

O código que deu certo foi esse.

public class Exercicio1 {

public static void main (String [] args) {

for (int i= 150 ; i<=300; i++ ) {

System.out.println (i);


	}

}

}

Obrigado!

The Badshark

ateubh

du123:
Cara,

Reveja a sintaxe do código que você postou. Ao final da linha do while, vc não pode colocar o ‘;’ ! =) E sim a chave {, para iniciar um bloco de comandos, que deverá ser executado enquanto a condição for satisfeita.

E dê preferencia por i = i + 1, fica mais claro =)

Tente novamente os exercicios, e poste seus progressos =)

Um Abraço.

sempre que puder, use estruturas do tipo i++, pois a jvm vai otimizá-lo de acordo com o ambiente onde ele for executado

cv1

O javac gera bytecodes diferentes:

// i++

   0:   iconst_0
   1:   istore_1
   2:   iinc    1, 1
   5:   iload_1
   6:   ireturn

// i = i + 1
   0:   iconst_0
   1:   istore_1
   2:   iload_1
   3:   iconst_1
   4:   iadd
   5:   istore_1
   6:   iload_1
   7:   ireturn

Mas se fosse esse o problema de performance das minhas aplicacoes, eu tava dando pulinhos. Nao se usa operadores de incremento pq eh mais rapido, se usa operadores de incremento pq eles consomem muito menos processamento cerebral pra entender. :wink:

Alias, o bytecode pode ate ser diferente, mas qualquer JVM que sirva pra alguma coisa que nao seja atirar na mae de quem a fez tem essa otimizacao, e dezenas, talvez centenas de outras.

D

O ganho é irrisório…
Questão de opnião. Eu prezo pela relação clareza x custo …

Tks! =)

Sami_Koivu

Julgando pelo bytecode você deve ter feito algo tipo:

public int method1() {
        int i = 0;
        i++;
        return i;
    }

    public int method2() {
        int i = 0;
        i = i + 1;
        return i;
    }

É interessante (ou talvez nem tanto :slight_smile: ) notar que eclipse cria o mesmo bytecode para ambos métodos, utilizando sempre a instrução iinc.

0:   iconst_0
   1:   istore_1
   2:   iinc    1, 1
   5:   iload_1
   6:   ireturn

[]s,
Sami

Criado 27 de novembro de 2006
Ultima resposta 30 de nov. de 2006
Respostas 10
Participantes 9