Olá,sou iniciante em Java e fiz uma calculadora simples para estudo,porém não consigo validar a escolha do usuário,ou seja as escolhas são 1,2,3,4,5,6,7,8 e 0 se ele digitar algum número além desses o programa deveria parar(vai ficar mais claro se eu mostrar o código).
tentei assim:
Scanner entrada = new Scanner (System.in);
int selecao = 0;
boolean OpcaoInvalida = false;
int opcoes[] = {0,1,2,3,4,5,6,7,8};
System.out.println("Digite sua opção:");
selecao = entrada.nextInt();
for (int i = 0 ; i <8 ; i++){
if(opcoes[i] != selecao){
System.out.println ("Opção inválida!");
}else{
//Resto do código...
}
}
O código compilou corretamente,porém sempre que eu digito uma opção,mesmo sendo válida ela é considerada inválida.
Restante do código:
Funções da calculadora
class FuncoesCalculadora{
void Soma (Double n1, Double n2){
Double soma;
soma = n1 + n2;
System.out.println(soma);
}
void Multiplicacao ( Double n1 , Double n2){
Double produto ;
produto = n1 * n2;
System.out.println(produto);
}
void Divisao ( Double n1 , Double n2 ){
Double divisao ;
divisao = n1 / n2;
System.out.println (divisao);
}
void Subtracao ( Double n1 , Double n2 ){
Double subtracao ;
subtracao = n1 - n2;
System.out.println(subtracao);
}
void LogaritmoNatural ( Double n1){
Double logaritmo;
logaritmo = Math.log(n1);
System.out.println(logaritmo);
}
void GerarAleatorio (){
int aleatorio;
aleatorio = (int) (Math.random () * 10);
System.out.println(aleatorio);
}
void RaizQuadrada(Double n1){
Double raiz;
raiz = Math.sqrt(n1);
System.out.println(raiz);
}
void Potencia(Double n1 , Double n2){
Double potencia;
potencia = Math.pow(n1,n2);
System.out.println(potencia);
}
}
Menu da calculadora
import java.util.Scanner;
class MenuCalculadora{
void menu (){
FuncoesCalculadora Executor = new FuncoesCalculadora();
boolean sair = false ;
Scanner entrada = new Scanner (System.in);
int opcoes[] = {0 , 1 , 2 ,3 ,4 ,5 ,6 ,7 ,8 };
int selecao;
Double n1,n2;
System.out.println ( "_______________Calculadora______________");
System.out.println ("(1)Somar dois números.");
System.out.println ("(2)Subtrair dois números.");
System.out.println ("(3)Multiplicar dois números.");
System.out.println ("(4)Dividir dois números.");
System.out.println ("(5)Gerar um número aleatório entre 0 e 10.");
System.out.println ("(6)Obter o valor do Logaritmo Natural de um número.");
System.out.println ("(7)Obter o valor da raíz quadrada de um número.");
System.out.println ("(8)Potência.");
System.out.println ("(0)Sair.");
System.out.println ("___________________________________________");
while (sair == false){
selecao = entrada.nextInt();
switch (selecao){
case 1:
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble ();
Executor.Soma(n1 , n2);
System.out.println("digite outra opção:");
break;
case 2:
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble();
Executor.Subtracao(n1 , n2);
System.out.println("digite outra opção:");
break;
case 3 :
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble();
Executor.Multiplicacao(n1 , n2);
System.out.println("digite outra opção:");
break;
case 4 :
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble();
Executor.Divisao(n1 , n2);
System.out.println("digite outra opção:");
break;
case 5:
Executor.GerarAleatorio();
System.out.println("digite outra opção:");
break;
case 6:
System.out.println ("Digite o número:");
n1 = entrada.nextDouble();
Executor.LogaritmoNatural(n1);
System.out.println("digite outra opção:");
break;
case 7:
System.out.println ("Digite o número:");
n1 = entrada.nextDouble();
Executor.RaizQuadrada(n1);
System.out.println("digite outra opção:");
break;
case 8 :
System.out.println ("Digite o número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o Expoente:");
n2 = entrada.nextDouble();
Executor.Potencia(n1 , n2);
System.out.println("digite outra opção:");
break;
case 0:
sair = true;
break;
default :
System.out.println ("Nenhuma opção Selecionada.");
break;
}//Switch
}//While
}//Menu
}//Classe
Classe para iniciar a Calculadora;
public class IniciarCalculadora{
public static void main (String args []){
MenuCalculadora Iniciar = new MenuCalculadora ();
Iniciar.menu();
}
}
Onde eu tentei implementar o validador:
import java.util.Scanner;
class MenuCalculadora{
void menu (){
FuncoesCalculadora Executor = new FuncoesCalculadora();
boolean sair = false , OpcaoInvalida = false;
Scanner entrada = new Scanner (System.in);
int opcoes[] = {0 , 1 , 2 ,3 ,4 ,5 ,6 ,7 ,8 };
int selecao;
Double n1,n2;
System.out.println ( "_______________Calculadora______________");
System.out.println ("(1)Somar dois números.");
System.out.println ("(2)Subtrair dois números.");
System.out.println ("(3)Multiplicar dois números.");
System.out.println ("(4)Dividir dois números.");
System.out.println ("(5)Gerar um número aleatório entre 0 e 10.");
System.out.println ("(6)Obter o valor do Logaritmo Natural de um número.");
System.out.println ("(7)Obter o valor da raíz quadrada de um número.");
System.out.println ("(8)Potência.");
System.out.println ("(0)Sair.");
System.out.println ("___________________________________________");
while (sair == false){
selecao = entrada.nextInt();
for(int i = 0 ; i <8 ; i++){
if(opcoes[i] != selecao){
System.out.println ("Opção inválida!");
}else{
switch (selecao){
case 1:
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble ();
Executor.Soma(n1 , n2);
System.out.println("digite outra opção:");
break;
case 2:
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble();
Executor.Subtracao(n1 , n2);
System.out.println("digite outra opção:");
break;
case 3 :
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble();
Executor.Multiplicacao(n1 , n2);
System.out.println("digite outra opção:");
break;
case 4 :
System.out.println ("Digite o primeiro número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o segundo número:");
n2 = entrada.nextDouble();
Executor.Divisao(n1 , n2);
System.out.println("digite outra opção:");
break;
case 5:
Executor.GerarAleatorio();
System.out.println("digite outra opção:");
break;
case 6:
System.out.println ("Digite o número:");
n1 = entrada.nextDouble();
Executor.LogaritmoNatural(n1);
System.out.println("digite outra opção:");
break;
case 7:
System.out.println ("Digite o número:");
n1 = entrada.nextDouble();
Executor.RaizQuadrada(n1);
System.out.println("digite outra opção:");
break;
case 8 :
System.out.println ("Digite o número:");
n1 = entrada.nextDouble();
System.out.println ("Digite o Expoente:");
n2 = entrada.nextDouble();
Executor.Potencia(n1 , n2);
System.out.println("digite outra opção:");
break;
case 0:
sair = true;
break;
default :
System.out.println ("Nenhuma opção Selecionada.");
break;
}//Switch
}//While
}//Menu
}//Else
}//Classe
Desculpem a confusão no código,pois estou aprendendo OO e não tenho muita noção ainda.
Sei que nesse caso o Switch resolveria meu problema apenas utilizando o Default , mas se o Switch não existisse,o que eu faria?
Agradeço a ajuda.