Ir ao conteúdo
  • Cadastre-se

Java Switch não reconhece a matriz e fala que ela esta nula


Ir à solução Resolvido por ortopntz,

Posts recomendados

Estou exercitando java e sou novato ainda. 3 semestre de S.I e tive uma ideia de fazer um sistema de feira que vou implementar a um banco. Porém antes fui ver como ficaria usando estruturas de dados e fiz com matriz.

 

Quando eu coloco o switch e faço  a linha de código do case 1 ao entrar no for ele dar esse erro  

Cannot invoke "Object.equals(Object)" because "comidas[i][0]" is null porém se eu tentar fazer o codigo sem switch ele funciona dboa. então o problema é sempre quando eu coloco o switch porém não estou conseguindo encontrar o erro, ja tentei o chat gpt e tambem não conseguir.

 

import java.util.Scanner;

import javax.swing.JOptionPane;

public class teste {
    public static void main(String[] args) {

        String escolha;
        Scanner n = new Scanner(System.in);
        Object[][] comidas = new Object[20][20];
       comidas[0][0] = "Pao";
        comidas[0][1] = 5;
        comidas[1][0] = "Arroz";
        comidas[1][1] = 10;
        comidas[2][0] = "feijao";
        comidas[2][1] = 4;
        comidas[3][0] = "Carne";
        comidas[3][1] = 0;
        do {
        
            System.out.println(" 1.Procurar itens \n 2.Procurar item especifico que esteja em falta");
            System.out.println("Escolha uma das opções");
            int feira = n.nextInt();
            switch (feira) {

                case 1:
                    
                    System.out.print("Qual nome do produto você deseja saber? ");
                    String nome = n.nextLine();

                    for (int i = 0; i < comidas.length; i++) {
                        if (comidas[i][0].equals(nome)) {
                            System.out.println("A quantidade é: " + comidas[i][1]);

                            break;
                        }
                    }
                    break;
               case 2:
                    System.out.print("Qual item voce deseja saber? ");
                    String item = n.nextLine();
                    for (int i = 0; i < comidas.length; i++) {
                        if (comidas[i][0].equals(item)) {
                            if (comidas[i][1].equals(0)) {

                                System.out.println("Este item está em falta.");

                                break;
                            }
                            System.out.println("Relaxa esse não esta em falta.");
                            break;
                        }
                    }
                    break;

                default:
                    break;
                }

             System.out.println("Deseja continuar olhando? ");
            escolha = n.nextLine();

        } while (escolha != "sim");

        JOptionPane.showMessageDialog(null, "Obrigado por nos consultar!");

        n.close();
    }
}

 

Link para o comentário
Compartilhar em outros sites

  • Solução

O problema está no n.nextInt(). Este método apenas consome o número inteiro que você passa no console, mas não o Enter, que é representado pelo caracatere '\n'.
Esse '\n' fica no buffer do scanner, e quando você faz o n.nextLine(), ele vai continuar lendo o buffer e interpretar esse '\n' que sobrou como se fosse uma nova leitura, e a variável "nome" recebe um valor vazio.

Pra resolver isso você pode colocar um n.nextLine() logo acima da linha com o "String nome = n.nextLine()". Isso vai fazer ele "jogar fora" esse resto que ficou no buffer.
 

System.out.print("Qual nome do produto você deseja saber? ");
n.nextLine();
String nome = n.nextLine();


você também pode trocar o n.nextInt() pelo n.nextLine() e trocar os cases por strings, o que seria mais seguro pois não causa esse tipo de problema.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!