TransWikia.com

O programa trava quando chega no while

Stack Overflow em Português Asked on November 15, 2021

Fiz um programinha básico sobre calcular potenciação, porém quando chega no while trava, e até o terminal eu tenho que reiniciar. Assim não consigo continuar o programa. Até tentei mudar a maneira do Scanner porém cheguei a conclusão que era o while mesmo.

import java.util.Scanner;

   
    int c = 0; //contador
    int p = 1; //potencia

    int a;
    int b;
    Scanner input = new Scanner(System.in);

    System.out.println("Digite o valor da base:");
    a = input.nextInt();
    System.out.println("Digite o valor do expoente:");
    b = input.nextInt();
   
    while (c != b){
         p = p * a;
         c = c++;
        
        }

    System.out.printf("A potencia de int %d como base e int %d como expoente eh: %dn",a, b, p);
    input.close();
}

One Answer

O maior problema é que o c++ já está fazendo o incremento na variável, o ++ é um operador que causa efeito colateral e muda o valor da variável, então a atribuição do resultado nela mesma está fazendo algo indevido e causando problema.

Na verdade o código poderia ser melhor organizado e dar nomes melhores para as variáveis, assim pode evitar comentários.

Poderia usar um for mas preferi deixar assim porque poderia ser exigência do exercício.

import java.util.Scanner;

class Main {
    public static void main (String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("Digite o valor da base:");
        int base = input.nextInt();
        System.out.println("Digite o valor do expoente:");
        int expoente = input.nextInt();
        int contador = 0;
        int potencia = 1;
        while (contador != expoente) {
            potencia *= base;
            contador++;
        }
        System.out.printf("A potencia de int %d como base e int %d como expoente eh: %dn", base, expoente, potencia);
        input.close();
    }
}

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Answered by Maniero on November 15, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP