Pessoal, estou aqui fazendo um trabalho pro curso, porém me deparei com uma questão…
Por exemplo:
//Vou começar um DO aqui
[color=blue]do{[/color]
…
… // Desenvolver do programa
…
…
[color=blue]}while (novaConsulta == 1);[/color]
Minha dúvida é a seguinte…
Tem como eu começar um DO da seguinte forma?
[color=blue]do{[/color]
…
…
[color=red]do{ //Mais um DO aqui logo após o outro. [/color]
…
…
[color=blue]}while (novaConsulta == 1);[/color]
[color=red]}while(outraVariavel == 2); [/color] // E finalizar ele aqui logo após o primeiro while?
Com esse esquema estou enfrentando problemas pois o SEGUNDO DO está fechando no PRIMEIRO WHILE…
Como posso fazer?
Não senhor…
Questão de lógica, um do{}while; está dentro do outro, portanto não há como fazer o que você está querendo.
Primeiro tem que finalizar as rotinas do 2° do para refazer a do 1°.
Você poderia mostrar exatamente o que você precisa fazer, para eu poder avaliar outras opções de laço e não essa que você propos?
Pois realmente como você falou o compilador vai entender que o “do” de dentro está sendo fechado com o “while” de dentro e não como você queria.
Explique melhor o que você precisar fazer para eu poder te ajudar
Att
Ok, entendi a ideia, irei disponibilizar o fonte…
[code]package Trabalho1;
import java.util.Scanner;
public class Trabalho1 {
public static void main(String[] args) {
int novaConsulta;
Scanner teclado = new Scanner(System.in);
do{
System.out.println("Digite o número de matriculado do funcionário");
System.out.println("Digite 999 para sair da consulta");
int matricula = teclado.nextInt();
switch (matricula) {
case 999:
System.out.println("Você finalizou a consulta!");
System.exit(0);
}
System.out.println("Digite o nome do funcionário");
String nome = teclado.nextLine();
System.out.println("Digite o número indicando a função do funcionário conforme a tabela abaixo:");
System.out.println("(1) - Gerente");
System.out.println("(2) - Camareira");
System.out.println("(3) - Cozinheiro");
System.out.println("(4) - Garçom");
System.out.println("(5) - Atendente");
System.out.println("(6) - Manobrista");
int funcao = teclado.nextInt();
System.out.println("Digite o número de horas normais que o funcionário trabalhou:");
int horasNormal = teclado.nextInt();
System.out.println("Digite o número de horas extras que o funcionário trabalhou:");
int horasExtras = teclado.nextInt();
System.out.println("Você deseja realizar uma nova consulta?");
System.out.println("1 -> Sim");
System.out.println("2 -> Não");
novaConsulta = teclado.nextInt();
//ESTOU ME COMPLICANDO BASTANTE NESSES IF'S, EU GOSTARIA QUE ELES VERIFICASSEM SE O USUÁRIO DIGITAR 1 ELE EXIBIRÁ A MENSAGEM "INICIANDO NOVA CONSULTA" E RETORNARÁ LÁ NO PRIMEIRO DO, LÁ EM CIMA NO INÍCIO DO CÓDIGO, ATÉ AÍ TUDO BEM, PORÉM GOSTARIA DE COLOCAR UM DO PARA REPETIR ESSE "Você deseja realizar uma nova consulta" CASO O USUÁRIO INSISTA EM COLOCAR NÚMEROS ERRADOS E DIFERENTES DE 1 E 2. NÃO SEI SE ESTOU PENSANDO CERTO SE NÃO PODERIAM ME PASSAR INSTRUÇÕES PARA RESOLVER ISSO?
if (novaConsulta == 1){
System.out.println("Iniciando nova consulta...");
}
}while (novaConsulta == 1);
if (novaConsulta ==2){
System.out.println("Você finalizou a consulta!");
}
if (novaConsulta >= 3){
System.out.println("Digite um número válido");
}
if (novaConsulta <=0 ){
System.out.println("Digite um número válido");
}
}
}[/code]
Pessoal, acho que confundi muito a cabeça de vocês, mas consegui resolver meu problema… Vou postar o código modificado para que outras pessoas possam utilizar.
Abraço
[code]do {
System.out.println(“Digite o número de matriculado do funcionário”);
System.out.println(“Digite 999 para sair da consulta”);
int matricula = teclado.nextInt();
switch (matricula) {
case 999:
System.out.println("Você finalizou a consulta!");
System.exit(0);
}
System.out.println("Digite o nome do funcionário");
String nome = teclado.nextLine();
System.out.println("Digite o número indicando a função do funcionário conforme a tabela abaixo:");
System.out.println("(1) - Gerente");
System.out.println("(2) - Camareira");
System.out.println("(3) - Cozinheiro");
System.out.println("(4) - Garçom");
System.out.println("(5) - Atendente");
System.out.println("(6) - Manobrista");
int funcao = teclado.nextInt();
System.out.println("Digite o número de horas normais que o funcionário trabalhou:");
int horasNormal = teclado.nextInt();
System.out.println("Digite o número de horas extras que o funcionário trabalhou:");
int horasExtras = teclado.nextInt();
do{
System.out.println("Você deseja realizar uma nova consulta?");
System.out.println("1 -> Sim");
System.out.println("2 -> Não");
novaConsulta = teclado.nextInt();
}while((novaConsulta >= 3) || (novaConsulta <= 0));
switch (novaConsulta) {
case 1:
System.out.println("Iniciando nova consulta");
case 2:
System.out.println("Você finalizou a consulta");
}
} while (novaConsulta == 1);
}
}[/code]