Calculo do expoente de vários números inseridos pelo uti
7 respostas
S
sirious09
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:
publicstaticvoidmain(String[]args){inti,base,exp,result=1;Scannerinput=newScanner(System.in);System.out.println("Introduza o número de séries");intn=input.nextInt();System.out.println("Introduza o expoente");exp=input.nextInt();for(intx=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);}}
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:
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
V
VA1
importjava.util.Scanner;publicclassExpoente{// X[elevado a n] = r;longx,n,r=1;Expoente(){init();}privatevoidinit(){Scannerinput=newScanner(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(inti=0;i<n+1;i++){r*=x;if(i==0){r=1;}System.out.println(x+"^"+i+" = "+r);}}publicstaticvoidmain(Stringarg[]){Expoentee=newExpoente();}}
S
SnakeMaster
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
S
sirious09
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
S
sirious09
Afinal a solução era apenas colocar o "result=1" no 1º for que conta a entradas! :D
publicstaticvoidmain(String[]args){inti,base,exp,result=1;Scannerinput=newScanner(System.in);System.out.println("Introduza o número de séries");intn=input.nextInt();System.out.println("Introduza o expoente");exp=input.nextInt();for(intx=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);}}}
RodrigoKaos
Vc só precisava resetar ela antes da multiplicação, n importava em qual for seria