Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

PROBLEMA

import java.util.ArrayList;
import java.util.Scanner;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
public class Main {

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


        Scanner sc = new Scanner(System.in);

        // Usar exceção para tratar entradas inválidas para os valores referente a produtos e salário do Funcionario - TODO

        float valorProduto=0.0f; 
        try {
        System.out.println("DIGITE O VALOR DO PRODUTO");
        valorProduto = sc.nextFloat();
        }catch(ArithmeticException | NoSuchElementException | IllegalStateException  e) {
            String r = e.getMessage();
            System.out.println(r);
        }

        float salarioFuncionario=0.0f;
        try {
            System.out.println("DIGITE O SALARIO DO FUNCIONARIO");
            salarioFuncionario = sc.nextFloat();
            System.out.println("TESTANDO AQUI ");
        }catch(ArithmeticException | InputMismatchException e) {
            String r = e.getMessage();
            System.out.println(r);
        }
        Endereco end1 = new Endereco("Av. Costa e Silva", 2001, "Universitário", "Campo Grande", "79070-900");
        Endereco end2 = new Endereco("Av. Afonso Pena", 2002, "Centro", "Campo Grande", "79065-555");
        Endereco end3 = new Endereco("Rua do Parque", 2003, "Centro", "Campo Grande", "79065-190");
        Endereco end4 = new Endereco("Av. Nelly Martins", 2004, "Portal Itayara", "Campo Grande", "79065-190");
        Endereco end5 = new Endereco("Rua Coronel Zózimo", 2005, "Monte Castelo", "Campo Grande", "79065-190");
        Endereco end6 = new Endereco("Rua Barueri", 2006, "Moreninha II", "Campo Grande", "79065-190");

        Funcionario func1 = new Funcionario("Everton", "33333333333", end1, "67999464219",  1000, "Feirante");
        Funcionario func2 = new Funcionario("Lourdes", "22222222222", end2, "67999898985", salarioFuncionario, "Feirante");

        Cliente cli1 = new Cliente("Eduardo", "07435925144", end3, "67999464221");
        Cliente cli2 = new Cliente("Thiago", "50093037104", end4, "67999464220");

        Fornecedor empresa1 = new Fornecedor("barraca no mercadão municipal", "GOOOL", "52393813000192", end5, "67999464219");
        Fornecedor empresa2 = new Fornecedor("barraca na feira central", "TAAAM", "52393813000192", end5, "67999464219");

        Produto produto1 = new Produto("Morango", 1.50f, empresa1);
        Produto produto2 = new Produto("Macadâmia", valorProduto, empresa1);
        Produto produto3 = new Produto("Manga", 3.50f, empresa1);
        Produto produto4 = new Produto("Mexerica", 4.50f, empresa1);
        Produto produto5 = new Produto("Mamão", 5.50f, empresa2);
        Produto produto6 = new Produto("Mirtilo", 6.50f, empresa2);
        Produto produto7 = new Produto("Melancia", 7.50f, empresa2);
        Produto produto8 = new Produto("Melão", 8.50f, empresa2);
        Produto produto9 = new Produto("Maça", 9.50f, empresa1);
        Produto produto10 = new Produto("Maracujá", 10.50f, empresa1);

        Compra compra1 = new Compra(func1, cli1);
        Compra compra2 = new Compra(func2, cli2);

        compra1.adicionaProduto(produto1);
        compra1.adicionaProduto(produto2);
        compra1.adicionaProduto(produto3);
        compra1.adicionaProduto(produto4);
        compra1.adicionaProduto(produto5);

        compra2.adicionaProduto(produto6);
        compra2.adicionaProduto(produto7);
        compra2.adicionaProduto(produto8);
        compra2.adicionaProduto(produto9);
        compra2.adicionaProduto(produto10);

        compra2.listarCompra();

        System.out.println("\n*********************SEGUNDA COMPRA\n");
        compra1.listarCompra();





    }

}

Guuuys, lancei essa exception, para quando o usuário digitar um valor inválido no input, como por exemplo uma letra; só que, quando o usuário digita uma letra, deveria executar o segundo try, e ele realmente entra no segundo try, mas só executa a primeira linha, não pegando o segundo input, e consequentemente ele executa o segundo catch. Como faço para solucionar isso?

2 respostas

Meeeeeeeee.... my friends ajudaram... precisava colocar um sc.nextLine();

solução!
import java.util.ArrayList;
import java.util.Scanner;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
public class Main {

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


        Scanner sc = new Scanner(System.in);

        float valorProduto=0.0f; 
        float salarioFuncionario=0.0f;

        try {
        System.out.println("DIGITE O VALOR DO PRODUTO: ");
        valorProduto = sc.nextFloat();

        }catch(InputMismatchException  e) {
            System.out.println("DEU MUITO RUIM");
        }



        Endereco end1 = new Endereco("Av. Costa e Silva", 2001, "Universitário", "Campo Grande", "79070-900");
        Endereco end2 = new Endereco("Av. Afonso Pena", 2002, "Centro", "Campo Grande", "79065-555");
        Endereco end3 = new Endereco("Rua do Parque", 2003, "Centro", "Campo Grande", "79065-190");
        Endereco end4 = new Endereco("Av. Nelly Martins", 2004, "Portal Itayara", "Campo Grande", "79065-190");
        Endereco end5 = new Endereco("Rua Coronel Zózimo", 2005, "Monte Castelo", "Campo Grande", "79065-190");
        Endereco end6 = new Endereco("Rua Barueri", 2006, "Moreninha II", "Campo Grande", "79065-190");

        try {
            System.out.println("DIGITE O SALÁRIO DO FUNCIONÁRIO: ");
            //SE ELE COMEU ALGUM INPUT COLOCA ESSE NEXTLINE
            //TA PASSADA?
            sc.nextLine();
            salarioFuncionario = sc.nextFloat();
            System.out.println(salarioFuncionario);
        }catch(InputMismatchException e) {
            String r = e.getMessage();
            System.out.println(r);
        }
        Funcionario func1 = new Funcionario("Everton", "33333333333", end1, "67999464219",  1000, "Feirante");
        Funcionario func2 = new Funcionario("Lourdes", "22222222222", end2, "67999898985", salarioFuncionario, "Feirante");

        Cliente cli1 = new Cliente("Eduardo", "07435925144", end3, "67999464221");
        Cliente cli2 = new Cliente("Thiago", "50093037104", end4, "67999464220");

        Fornecedor empresa1 = new Fornecedor("barraca no mercadão municipal", "GOOOL", "52393813000192", end5, "67999464219");
        Fornecedor empresa2 = new Fornecedor("barraca na feira central", "TAAAM", "52393813000192", end5, "67999464219");

        Produto produto1 = new Produto("Morango", 1.50f, empresa1);
        Produto produto2 = new Produto("Macadâmia", valorProduto, empresa1);
        Produto produto3 = new Produto("Manga", 3.50f, empresa1);
        Produto produto4 = new Produto("Mexerica", 4.50f, empresa1);
        Produto produto5 = new Produto("Mamão", 5.50f, empresa2);
        Produto produto6 = new Produto("Mirtilo", 6.50f, empresa2);
        Produto produto7 = new Produto("Melancia", 7.50f, empresa2);
        Produto produto8 = new Produto("Melão", 8.50f, empresa2);
        Produto produto9 = new Produto("Maça", 9.50f, empresa1);
        Produto produto10 = new Produto("Maracujá", 10.50f, empresa1);

        Compra compra1 = new Compra(func1, cli1);
        Compra compra2 = new Compra(func2, cli2);

        compra1.adicionaProduto(produto1);
        compra1.adicionaProduto(produto2);
        compra1.adicionaProduto(produto3);
        compra1.adicionaProduto(produto4);
        compra1.adicionaProduto(produto5);

        compra2.adicionaProduto(produto6);
        compra2.adicionaProduto(produto7);
        compra2.adicionaProduto(produto8);
        compra2.adicionaProduto(produto9);
        compra2.adicionaProduto(produto10);

        compra2.listarCompra();

        System.out.println("\n*********************SEGUNDA COMPRA\n");
        compra1.listarCompra();
    }
}