Olá Pessoal.
Como estou aprendendo a utilizar o JAVA
gostaria de saber com reiniciar o programa a partir de um menu.
Por Exemplo: o que colocar após default: ???
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
case 4:
default:
//O QUE COLOCAR AQUI PARA REINICIAR O PROGRAMA ???
}
Agradeço aos colegas pelas dicas :idea:
Coloque seu menu dentro de um do…while
do {
//Desenho do menu aqui
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
case 4:
default:
//O QUE COLOCAR AQUI PARA REINICIAR O PROGRAMA ???
}
} while (opt != 4);
[quote=ViniGodoy]Coloque seu menu dentro de um do…while
do {
//Desenho do menu aqui
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
case 4:
default:
//O QUE COLOCAR AQUI PARA REINICIAR O PROGRAMA ???
}
} while (opt != 4);
[/quote]
Bom, coloquei o do… while, mas travou a tela, não reiniciou o programa. Só clicando no fechar da janela do Prompt pra sair. Acredito que tenha alguma outra alternativa para se conseguir isso, até tenho procurado mas nada. Bom deixo o código completo do programinha, se bem que ainda tenho algum código a fazer. Estou construindo ainda. Aliás se tiver algumas sugestões agradeço.
[code]
mport java.util.*;
import java.text.DecimalFormat;
public class Calculos{
/*Vamos criar um menu para diversos tipos de
calculos interessantes como, massa corporea,
fibonacci, PA, Bascara entre outros.*/
public static double MCorp(double Peso,double Altura){
String result="";
double MC= Peso / (Altura*Altura);
if (MC <= 15.0)
{ result ="Muito abaixo do peso";
}else{ if
(MC > 15.0 && MC <= 18.5) result = "Muito abaixo do peso";
}
if (MC>18.6 && MC<=24.9)
{ result = "Peso normal";
}else{ if
(MC>25.0 && MC<=29.9) result = "Acima do peso";
}
if (MC>30.0 && MC<=39.9)
{ result = "Muito acima do peso";
}else{ if
(MC>=40.0) result = "Peso excessivo";
}
System.out.println(" \n Situacao :" + result);
return MC;
}
public static int Fib(int F){
int fibo = 0;
return fibo;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
DecimalFormat VarStr = new DecimalFormat("0.000");
System.out.println("1. CALCULO DA MASSA CORPOREA \n" +
"2. CALCULO DE FIBONACCI \n" +
"3. CALCULO EQ 2 GRAU \n" +
"4. P.A. \n\n" +
" Escolha uma das opções");
int opt = in.nextInt();
do{
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
case 4:
default:
//O QUE COLOCAR AQUI PARA REINICIAR O PROGRAMA ???
}
} while (opt != 4);
}
}[/code]
Perceba que coloquei um comentário indicando para você quer o desenho do menu também deveria estar dentro do loop, assim como a leitura do opt.
[code]
mport java.util.*;
import java.text.DecimalFormat;
public class Calculos{
/*Vamos criar um menu para diversos tipos de
calculos interessantes como, massa corporea,
fibonacci, PA, Bascara entre outros.*/
public static double MCorp(double Peso,double Altura){
String result="";
double MC= Peso / (Altura*Altura);
if (MC <= 15.0)
{ result ="Muito abaixo do peso";
}else{ if
(MC > 15.0 && MC <= 18.5) result = "Muito abaixo do peso";
}
if (MC>18.6 && MC<=24.9)
{ result = "Peso normal";
}else{ if
(MC>25.0 && MC<=29.9) result = "Acima do peso";
}
if (MC>30.0 && MC<=39.9)
{ result = "Muito acima do peso";
}else{ if
(MC>=40.0) result = "Peso excessivo";
}
System.out.println(" \n Situacao :" + result);
return MC;
}
public static int Fib(int F){
int fibo = 0;
return fibo;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
DecimalFormat VarStr = new DecimalFormat("0.000");
do{
System.out.println("1. CALCULO DA MASSA CORPOREA \n" +
"2. CALCULO DE FIBONACCI \n" +
"3. CALCULO EQ 2 GRAU \n" +
"4. P.A. \n\n" +
"5. Sair\n\n" +
" Escolha uma das opções");
int opt = in.nextInt();
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
break;
case 4:
break;
}
} while (opt != 5);
}
}[/code]
[quote=Armando Pereira][quote=ViniGodoy]Coloque seu menu dentro de um do…while
do {
//Desenho do menu aqui
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
case 4:
default:
//O QUE COLOCAR AQUI PARA REINICIAR O PROGRAMA ???
}
} while (opt != 4);
[/quote]
Bom, coloquei o do… while, mas travou a tela, não reiniciou o programa. Só clicando no fechar da janela do Prompt pra sair. Acredito que tenha alguma outra alternativa para se conseguir isso, até tenho procurado mas nada. Bom deixo o código completo do programinha, se bem que ainda tenho algum código a fazer. Estou construindo ainda. Aliás se tiver algumas sugestões agradeço.
[code]
mport java.util.*;
import java.text.DecimalFormat;
public class Calculos{
/*Vamos criar um menu para diversos tipos de
calculos interessantes como, massa corporea,
fibonacci, PA, Bascara entre outros.*/
public static double MCorp(double Peso,double Altura){
String result="";
double MC= Peso / (Altura*Altura);
if (MC <= 15.0)
{ result ="Muito abaixo do peso";
}else{ if
(MC > 15.0 && MC <= 18.5) result = "Muito abaixo do peso";
}
if (MC>18.6 && MC<=24.9)
{ result = "Peso normal";
}else{ if
(MC>25.0 && MC<=29.9) result = "Acima do peso";
}
if (MC>30.0 && MC<=39.9)
{ result = "Muito acima do peso";
}else{ if
(MC>=40.0) result = "Peso excessivo";
}
System.out.println(" \n Situacao :" + result);
return MC;
}
public static int Fib(int F){
int fibo = 0;
return fibo;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
DecimalFormat VarStr = new DecimalFormat("0.000");
System.out.println("1. CALCULO DA MASSA CORPOREA \n" +
"2. CALCULO DE FIBONACCI \n" +
"3. CALCULO EQ 2 GRAU \n" +
"4. P.A. \n\n" +
" Escolha uma das opções");
int opt = in.nextInt();
do{
switch(opt)
{
case 1: //Calculo de Massa Corporea
System.out.println("Digite o peso: ");
double ps = in.nextDouble();
System.out.println("Digite a altura: ");
double h1 = in.nextDouble();
double mc = MCorp(ps,h1);
System.out.println(" \n Massa corporea: " + VarStr.format(mc));
break;
case 2: //Calculo de Fibonacci
System.out.println("Digite um numero: ");
int Fb = in.nextInt();
int fibo = Fib(Fb);
break;
case 3:
case 4:
default:
//O QUE COLOCAR AQUI PARA REINICIAR O PROGRAMA ???
}
} while (opt != 4);
}
}[/code][/quote]
Sr. Vini Godoy, provavelmente eu não tenha sido bem claro na minha idéia. O que estou tentando fazer
neste programa é que ao acabar uma operação retorne automaticamente ao menu, aí sim, ao passar
qualquer número diferente volta a linha de comando C:> dessa forma está encerrado a utilização do
aplicativo.
Agradeço a sua colaboração. Bom dia
[quote="Armando Pereira"]Sr. Vini Godoy, provavelmente eu não tenha sido bem claro na minha idéia. O que estou tentando fazer
neste programa é que ao acabar uma operação retorne automaticamente ao menu, aí sim, ao passar
qualquer número diferente volta a linha de comando C:> dessa forma está encerrado a utilização do
aplicativo.[/quote]
Sr. Armando. Talvez eu tenha julgado mal sua capacidade de raciocinar sobre a solução que estou te propondo.
Você sabe para que serve o bloco do, while? Uma dica: é uma estrutura de repetição. Como você quer mostrar o menu repetidas vezes, é ele quem fará o programa voltar ao início.
Se você tivesse rodado minha solução, veria que ela funciona. Você pode pressionar os números de 1 até 4 para fazer as operações, 5 para sair e, se digitar algo inválido, ele volta ao início, sem fazer operação alguma.
Não seria muito difícil, nem mesmo para um aluno do primeiro ano de informática, alterar esse programa para sair em com qualquer coisa diferente de um até quatro. Eu imaginei que mostrando o do, que é a instrução mais difícil e postando um menu funcional, você seria capaz de adaptar minha solução, o que fui enganado.
Alterar o programa é simples. Como você pode ver, ele sai quando opt for igual a 5. Então, basta vc definir esse valor a opt no bloco default do seu switch.