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]
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
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
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();
}
Afinal a solução era apenas colocar o “result=1” no 1º for que conta a entradas!
[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);
}
}