Duvida sobre matriz

1 resposta
J

Eu fiz esse código mas quando eu executo ele pula a parte de receber o nome e a poltrona
E tambem para eu verificar se o lugar esta vazio eu criei uma matriz auxiliar, mas não tenho certeza se a lógica esta certa.
Alguém pode me ajudar!!

package teatroo;

import java.util.Scanner;

public class Teatroo {

    public static void main(String[] args) {
        //método Scanner
        Scanner sc = new Scanner(System.in);
        //declaração de variavéis
        
        String poltronas[][] = new String[2][2];
        String auxiliar[][] = new String[2][2];
        int comparação;
        int totalreserva = 0;
        int reservacomfirmada = 0;
        int totaldisponiveis= 0;
        double preço;
        int status ;
    
        
        for (int linha = 0; linha <2; linha++){
            for(int coluna = 0; coluna < 2; coluna++){
        auxiliar[linha][coluna] = "D";
    }
        }
        
        for (int x = 0; x < 2; x++){
            for (int y = 0; y < 2; y++){
                poltronas[x][y] = "D";
            }
        }
        
        System.out.println("digite o valor do ingresso normal :");
        double valoringresso = sc.nextDouble();
        
        System.out.println("Digite o valor do ingresso para pessoas com cateiras estudantis:");
        double ingressoestudantes = sc.nextDouble();
        
        System.out.println("Digite o desconto para pessoas do sexo feminino:");
        double descontofe = sc.nextDouble();
        
        System.out.println("Digite o desconto para pessoas do sexo masculino:");
        double descontomas = sc.nextDouble();
       
        for (int linha = 0; linha <2; linha++){
        for(int coluna = 0; coluna < 2; coluna++){
        for(int l = 0; l < 2; l++){
           for(int c = 0; c < 2; c++ ){
               System.out.println("Digite (1) para reservar, ou");
               System.out.println("Digite (2) para cancelar uma resrva ja feita");
                  System.out.println("Digite (3) para confirmar uma reserva ja feita");
                
           comparação = sc.nextInt();
           
           if (comparação == 1){
               
               
                
               System.out.println("Digite 1 para sexo feminino ou 2 para sexo masculino");
               int sexo = sc.nextInt();
               
               System.out.println("Digite 1 para o tipo de ingresso inteira, ou 2 para ingresso do tipo meia");
               int tipo = sc.nextInt();
               
               System.out.println("Você possui carteirinha estudantil? Digite 1 para SIM ou 2 para NÃO?");
               status = sc.nextInt();
               
               System.out.println("Digite o seu nome :");
               String nome = sc.nextLine();
              
              totalreserva = totalreserva + 1;
               if(status == 1){
                  preço = ingressoestudantes;
                  System.out.println("O valor a ser pago é :" + preço);
               } 
               else if(tipo == 2){
                   preço = valoringresso/2;
                   System.out.println("O valor a ser pago é:" + preço);
               } else if(sexo == 1){
                   preço = valoringresso - descontofe;
                   System.out.println("O valor a ser pago é :" + preço);
               }
               else if(sexo == 2){
                   preço = valoringresso - descontomas;
                   System.out.println("O valor a ser pago é :" + preço);
               } 
               
               System.out.println("Digite a fileira que deseja e o numero da poltrona:");
               auxiliar[linha][coluna] = "R";
               
               if( poltronas[linha][coluna].equals("D")){
                   poltronas[l][c] = "R";
               }
               else 
                   System.out.println("Esta poltona ja foi vendida ou resrvada!"
                           + "Digite a fileira que deseja e o número da poltrona:");
          
           }
           else if(comparação == 2){
               System.out.println("Para cancelar a reserva informe a fileira e o numero da poltrona :");
                poltronas[l][c] = "D";
           }
              
        
          else if(comparação == 3){
                
             System.out.println("Para confirmar a resrvar digite a fileira e o numero da poltrona");
             poltronas[l][c]= "C";
             reservacomfirmada = reservacomfirmada + 1;
             
        } 
           }
           }
        for(int li = 0; li < 2; li++){
           for(int co = 0; co < 2; co++ ){ 
            System.out.println(poltronas[li][co]);
           
           if (poltronas[li][co].equals("D")){
                totaldisponiveis = totaldisponiveis  + 1;
           }
               System.out.println("O total de reservas confirmadas é: " + reservacomfirmada);
               System.out.println("O total de reservas é :" + totalreserva);
               System.out.println("O total de lugares disponiveis é :" + totaldisponiveis);
           }
       }
        }
    }
        
}
       
}

1 Resposta

TalonNoxus

Em cima de

Poem

Mas porque?

O sc.nextInt() lê somente o número inteiro que foi digitado, a tecla ENTER não é um número, logo não é lida e é armazenada num buffer(area de mémoria), e ai quando você vai dar o comando String nome = sc.nextLine(), o nextLine pega o ENTER que estava no buffer automaticamente e acaba que você não digita nada.

Então um nextLine é para pegar o ENTER e o outro é para armazenar na variável nome.

Mas tem como não precisar de um outro nextLine()?
Sim. usando BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

public static void main(String[] args) throws IOException
{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
	System.out.print("Digite o seu nome -> ");
	String nome = br.readLine();
	
	System.out.println("O seu nome é -> " + nome);
	
	System.out.print("Digite a sua idade -> ");
	int idade = Integer.parseInt(br.readLine());//Integer.parseInt faz a conversão de uma String para um tipo int, que no caso é a conversão do que vai ser digitado
	
	System.out.println("A sua idade é -> " + idade);
}

A poltrona não tem como você escolher já que você não passou o scanner ali.

Edit: Teste a lógica da poltrona agora que já colocou o segundo sc.nextLine(), se você não acertar a lógica da poltrona, tente mais uma vez :slight_smile:, e aí se não conseguir mesmo assim, volte aqui.

Criado 21 de setembro de 2016
Ultima resposta 22 de set. de 2016
Respostas 1
Participantes 2