Calculo do expoente de vários números inseridos pelo uti

Boas,
Sou novo por aqui e estou agora a começar a aprender java e surgiu-me uma dúvida quando pretendo calcular diferentes números com o mesmo expoente.
É pedido ao utilizador para definir quantas vezes quer fazer o cálculo e é pedido um novo número todas as vezes.
À 1º faz o calculo correto, mas depois não sei como fazer para voltar a fazer o looping apenas com o novo número!
O que fiz foi isto:

[code] public static void main(String[] args) {
int i, base, exp, result = 1;
Scanner input = new Scanner(System.in);
System.out.println(“Introduza o número de séries”);
int n = input.nextInt();
System.out.println(“Introduza o expoente”);
exp = input.nextInt();

    for( int x = 0; x < n ; x++)   {  
        System.out.println("Insira um numero");
        base = input.nextInt();
    for (i = 1; i <= exp; i++) {

        result = result * base;

    }
    System.out.printf("\n\n%d elevado a %d = %d", base, exp, result);
    }
    
}[/code]

Obrigado pessoal :slight_smile:

O melhor a fazer nesses casos, é usar um laço while que por definição deve ser usado quando não sabemos o número de vezes que o bloco de código deve ser repetido.

Vamos supor que quero que meu código se repita até um valor booleano ter valor false. Seria algo assim:[code]boolean repetir = true;
while(repetir){
// executo meu código

// Pergunto se o usuário deseja continuar, e atribuo esse valor à minha variável

}[/code]Entendeu?

O teu programa ta acumulando o valor de result, por isso o erro, vc precisa “resetar” o valor dessa variável a cada ciclo do for.
Assim vai funcionar corretamente

[code]import java.util.Scanner;

public class Expoente {
// X[elevado a n] = r;
long x, n, r = 1;

Expoente(){
	init();
}

private void init(){
	Scanner input = new Scanner(System.in); 
	System.out.print("Digite um número inteiro (X): ");
	x = input.nextLong();
	System.out.print("Digite um número inteiro para elevar X (N): ");
	n = input.nextLong();
	
	System.out.println("X: " + x + "; N: " + n);
	for(int i = 0; i < n+1; i++){
		r *= x;
		if(i == 0){
			r = 1;
		}
		System.out.println(x + "^" + i + " = " + r);
	}
}
public static void main(String arg[]){
	Expoente e = new Expoente();
}

}[/code]

primeiro pare de usar o int n = input.nextInt();

não use nextInt

prefira o nextLine
e depois converta ou converta direto na leitura

variavel = Integer.parseInt(scanner.nexLine()) e por aí vai
só dei o código para exemplo

pois dependendo da sua jdk vai dar pau

agora o outro problema o pessoal já respondeu

Muito obrigado galera :), são todas grandes ajudas!

Assim que tiver tempo e conseguir resolver posto aqui o resultado… Vou tentar de todas as formas :slight_smile:

Afinal a solução era apenas colocar o “result=1” no 1º for que conta a entradas! :smiley:

[code]public static void main(String[] args) {
int i, base, exp, result = 1;
Scanner input = new Scanner(System.in);
System.out.println(“Introduza o número de séries”);
int n = input.nextInt();
System.out.println(“Introduza o expoente”);
exp = input.nextInt();

    for (int x = 0; x < n; x++) {
        System.out.println("\nInsira um numero");
        base = input.nextInt();
        System.out.println(" A base escolhida : " + base); /* para que a váriavel result não fique com o valor do primeiro looping*/ 
        result = 1;
        
        for (i = 1; i <= exp; i++) {
            result = result * base;
            System.out.println(" Resulta: " + result);
        }
        System.out.printf("\n\n%d elevado a %d = %d\n", base, exp, result);
    }
}

}[/code]

Vc só precisava resetar ela antes da multiplicação, n importava em qual for seria