Aplicando exceções erro

8 respostas
java
V

Olá, estou aplicando exceções no meu código, mas to com um errinho aparentemente básico, mas não consigo encontrar o problema, mesmo comparando com outro código.

<strong>ERRO:</strong>

ShowTime.java:23: error: cannot find symbol

System.out.println("\nCPF: "+b1.getCpf());

^

symbol:   method getCpf()

location: variable b1 of type Banda

1 error

CÓDIGO QUE APONTA O ERRO:
public class ShowTime extends Banda {

public static void main(String arg[]){

Entrada entrada = new Entrada();

Integrante integran = new Integrante();

Banda b1 = new ImplementsBanda();
b1.impInicio();

//============================================================================

try{
b1.setCpf(Integer.parseInt(entrada.entDados("\nInforme seu CPF: “)));

System.out.println(”\nCPF: "+b1.getCpf());

}
catch(InvalidCpfException nfe){

System.out.println("\n CPF INVALIDO!!!");

}

}

}

8 Respostas

J

Como está o código da sua classe Banda?

V

public abstract class Banda {

private String nome = “”;

private int qtdIntegrantes = 0;

private String nomeIntegrantes = “”;

private String mscInfluente = “”;
private Informacoes info = new Informacoes();

private Discografia disc = new Discografia();

private Turnes turn = new Turnes();

private int cpf = 200;

//==========================================================
public void setCpf(int cpf) throws InvalidCpfException{

if(cpf >= 0){

if(cpf <= 11){
   this.cpf = cpf;
   }

   else{
   throw new InvalidCpfException();

}

}
}
}

J

Sua classe banda não tem um método getCpf, e você está tentando chamar na classe ShowTime, por isso acontece o erro!

S

Arruma isso aí, um CPF não é um número.
CPFs podem começar com zero.
Valores numéricos não possuem zero à esquerda.

V

Então, realizei as mudanças e agora foi. Também mudei de CPF para numero celular.
Porém, agora to com um erro aparentemente de logica aqui, que seria algo que o meu If deveria fazer, mas aparentemente não está.
Eu digito um numero qualquer, dentro das regras que estabeleci, e ele está caindo na opção invalida, invés de cair na opção valida, que exibiria meu numero. Vou mandar os codigos da classe BANDA e ShowTime abaixo, junto com oque me aparece no console.

Console:
Informe seu numero celular:
91667788

CELULAR INVALIDO!!!

Classe Banda:
public abstract class Banda {

private String nome = “”;

private int qtdIntegrantes = 0;

private String nomeIntegrantes = “”;

private String mscInfluente = “”;
private Informacoes info = new Informacoes();

private Discografia disc = new Discografia();

private Turnes turn = new Turnes();

private int cel = 200;
//==========================================================

public int getCel(){

return cel;

}

public void setCel(int cel) throws InvalidCelException{

if(cel >= 0){

if(cel <= 10){
   this.cel = cel;
   }

   else{
   throw new InvalidCelException();

}

}
}

Classe ShowTime:
public class ShowTime extends Banda {

public static void main(String arg[]){

Entrada entrada = new Entrada();

Integrante integran = new Integrante();

Banda b1 = new ImplementsBanda();

//=============================================================================
try{

b1.setCel(Integer.parseInt(entrada.entDados("\nInforme seu numero celular: “)));

System.out.println(”\nCELULAR: "+b1.getCel());

}
catch(InvalidCelException nfe){

System.out.println("\n CELULAR INVALIDO!!!");

}

}
R

Poste o código da classe Entrada.

V
import java.io.InputStreamReader;

import java.io.BufferedReader;

import java.io.IOException;

public class Entrada {

public String entDados(String rotulo){

	System.out.println(rotulo);

	InputStreamReader teclado = new InputStreamReader(System.in);
	BufferedReader buff = new BufferedReader(teclado);
	
	String metal ="";
		
	try{
		metal = buff.readLine();
	}
	catch(IOException ioe){
		System.out.println("\nErro");
	}

	return metal;
}

}

R

Você digitou “91667788”.
Analisando o código:

//cel é igual ao número 91667788
if(cel >= 0){ //91667788 é maior que 0, passa aqui
    if(cel <= 10){ //91667788 é maior que 10, não passa
        this.cel = cel;
    } else { 
        throw new InvalidCelException();
    }
}

O problema é que você quer checar o tamanho (length) do número, mas está apenas comparando o valor.

Uma forma de resolver isso é processar o celular como String:

void setCelular(String cel) {
    if (cel.length() <= 10 && cel.length() > 0) {
        this.cel = cel;
    } else {
         //jogar erro
    }
    //note que isso não checa se a String é composta por números, seria bom fazer um parseInt para isso
}
Criado 23 de abril de 2021
Ultima resposta 26 de abr. de 2021
Respostas 8
Participantes 4