Ir ao conteúdo

Java Fazer com que o else recomece o loop


Ir à solução Resolvido por Diego Mendes Rodrigues,

Posts recomendados

Postado

Bom estou com alguns errinhos no codigo mas tem um principal que quero resolver logo que é, quando o usuário ele digita algum item que não esta na matriz o codigo entra em um else que vai relatar que o item não existe e que o usuario digite novamente. Mas eu quero que o codigo recomece novamente fazendo as pergunta, mas dar erro dizendo que a matriz é nula. Esse é o erro (Object.equals(Object)" because "comidas[i][0]" is null        at teste.main(teste.java:32), tentei fazer algumas coisas mas não to conseguindo ter o raciocínio, tentei adicionar um while de booleans  mas não conseguir fazer o else recomeçar tudo. 

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);

        do {
            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;

            System.out.println(" 1.Procurar itens \n 2.Atualizar quantidade.");
            System.out.println("Escolha uma das opções");
            String feira = n.nextLine();
            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)) {
                            if (comidas[i][1].equals(0)) {

                                System.out.println("Este item está em falta.");
                                break;
                            }
                            System.out.println("A quantidade é: " + comidas[i][1]);
                            break;

                        } else {

                            System.out.println("Item não existe digite novamente.");

                        }

                    }
                    break;
                case "2":
                    System.out.println("1.Adicionar ou 2.Diminuir: ");
                    String usado = n.nextLine();
                    System.out.println("Qual produto deseja?");
                    String nomeprod = n.nextLine();
                    if (usado.equals("1")) {
                        for (int i = 0; i < comidas.length; i++) {

                            if (comidas[i][0].equals(nomeprod)) {
                                System.out.println("Deseja adicionar quantos? ");
                                String valor = n.nextLine();
                                int addqnt = Integer.valueOf(valor);
                                if ((int) comidas[i][1] >= 0) {
                                    int num = (int) comidas[i][1];
                                    int result = num + addqnt;
                                    System.out.println(result);
                                    comidas[i][1] = result;
                                    System.out.println("Agora tem " + comidas[i][1] + " do " + nomeprod);

                                    break;
                                }

                            } else {
                                System.out.println("Esse item não existe digite novamente");
                            }

                        }

                    }

                default:
                    break;
            }

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

        } while (!escolha.equalsIgnoreCase("não"));

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

        n.close();
    }

}

 

  • Solução
Postado

@Tosseg0 , boa tarde.

 

Segue uma nova versão do seu programa, funcionando da forma que você mencionou.

 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);

        Object[][] comidas = new Object[4][2];
        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;

        String opcao;
        do {
            System.out.println("1.Procurar itens \n2.Atualizar quantidade.");
            System.out.print("Escolha uma das opções [1/2]: ");
            opcao = entrada.nextLine();

            switch (opcao) {
                case "1":
                    System.out.print("Qual nome do produto você deseja saber? ");
                    String nome = entrada.nextLine();
                    boolean itemExiste = false;

                    for (int i = 0; i < comidas.length; i++) {
                        if (comidas[i][0].toString().equalsIgnoreCase(nome)) {
                            if (comidas[i][1].equals(0)) {
                                System.out.println("Este item está em falta.");
                            } else {
                                System.out.println("A quantidade deste item é: " + comidas[i][1]);
                            }
                            itemExiste = true;
                            break;
                        }
                    }
                    if (!itemExiste) {
                        System.out.println("O item com este nome não existe, pesquise novamente.\n");
                    }
                    break;

                case "2":
                    System.out.print("1.Adicionar ou 2.Diminuir [1/2]: ");
                    String usado = entrada.nextLine();

                    System.out.print("Qual o nome do produto você deseja? ");
                    String nomeProduto = entrada.nextLine();

                    if (usado.equals("1")) {
                        for (int i = 0; i < comidas.length; i++) {
                            if (comidas[i][0].toString().equalsIgnoreCase(nomeProduto)) {
                                System.out.print("Deseja adicionar quantos itens nesse produto? ");
                                String qtdQueSeraAdicionada = entrada.nextLine();
                                int qtdAdicionada = Integer.parseInt(qtdQueSeraAdicionada);

                                if ((int) comidas[i][1] >= 0) {
                                    int qtdAnterior = (int) comidas[i][1];
                                    comidas[i][1] = qtdAnterior + qtdAdicionada;

//                                    System.out.println(comidas[i][1]);
                                    System.out.println("Agora tem " + comidas[i][1] + " do " + nomeProduto);
                                    break;
                                }

                            } else {
                                System.out.println("Esse item não existe digite novamente");
                            }
                        }
                    }
                    break;

                default:
                    System.out.println("Escolha inválida! Tente novamente.\n");
                    continue;
            }

            System.out.print("Deseja continuar olhando [S/N]: ");
            opcao = entrada.nextLine();
        } while (!opcao.equalsIgnoreCase("n"));
    }
}

 

Espero ter ajudado!

Abraço,

Diego

  • Obrigado 1
Postado

@Diego Mendes Rodrigues Vllw amigo funcionou, inclusive tentei fazer desse jeito e não tava conseguindo de jeito nenhum. Pode me explicar como funciona essa parte de "boleean existe = false". Inclusive o chat mandou eu fazer assim também tentei e não conseguir. Esse "continue" também me deixou um pouco confuso coloquei no código uma vez e nada

Postado

@Tosseg0 , bom dia.

 

A declaração continue é usada na estrutura de controle do loop, quando você precisa saltar para a próxima iteração do loop imediatamente, em outras palavras, você quer voltar para o início do loop. Pode ser usado com o loop for ou o loop while.

A declaração continue é usada para que o loop continue. Continuando o fluxo atual do programa pulando o código restante na condição especifica. E no caso de um loop interno, continua o apenas o loop interno.

 

Veja alguns exemplos:

 

image.png.26c89030a6e227cc3cb893748932c1ef.png

 

 

image.png.2bc086638692ac3874a2874032f07364.png

 

 

image.png.5e82dfa0036b0839e28a507041c5849a.png

 

Dê uma olhada nesse artigo: https://www.javatpoint.com/pt/a-declaração-continue-em-java

 

A variável do tipo boolean é chamada de variável usada para armazenar somente dois possíveis valores: verdadeiro (true) e falso (false).

Este tipo de dado é usado por sinalizadores simples que localizam condições verdadeira/falsa.

Depois podemos utilizar o valor dessa variável em um if(), pois o if() trabalha justamente com valores lógicos.

 

Dê uma olhada nesse código:

 

boolean maiorDeIdade = false;
int idade = 16;

if (idade >= 18) {
	maiorDeIdade = true;
}

if (maiorDeIdade) {
	System.out.println("A pessoa é maior de idade");
} 
else {
	System.out.println("A pessoa é menor de idade");
}

# Alterando a idade
idade = 30;

if (idade >= 18) {
	maiorDeIdade = true;
}

if (maiorDeIdade) {
	System.out.println("A pessoa é maior de idade");
} 
else {
	System.out.println("A pessoa é menor de idade");
}

 

Espero ter ajudado!

Abraço,

Diego

  • Amei 1

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!