Codigo com erro

2 respostas
programaçãojava
fernando84

Estou com problema para compilar um teste que vi no livro deitel, tenho duas classes, porém na hora de executar da sempre o erro. abaixo segue o codigo, sei que não expliquei muito bem, sou novato no estudo da linguagem. Seguem as classes abaixo:

CLASSE AUTOPOLICYTEST
package cap5;

public class AutoPolicyTest {

public static void main(String[] args) {
    //Cria dois objetos AutoPolice
    AutoPolicy policy1 = new AutoPolicy(11111111, "Toyota Camry", "NJ");
    AutoPolicy policy2 = new AutoPolicy2(22222222, "Ford Fusion", "ME");
    //exibe se cada apolice esta em um estado "sem culpa"
    policyInNoFaultState(policy1);
    policyInNoFaultState(policy2);
}    
//metodo que mostra se o AutoPolicy
//esta em um estado com seguro de automovel "sem culpa"
public void policyInNoFaultState(AutoPolicy policy){
    System.out.println("The auto policy: ");
    System.out.printf("Account #: %d; Car: %s; State: %s %s a no-fault state%n%n",
            policy.getAccountNumber(), policy.getMakeAndModel(), policy.getState(),
            (policy.isNoFaultState()? "is": "is not"));
}

}//fim do main

CLASSE AUTOPOLICY

public class AutoPolicy {
private int accountNumber;//numero da conta da apolice
private String makeAndModel;//carro ao qual a apolice é aplicada
private String state;//abreviatura do estado com 2 letras

//contrutor
public AutoPolicy(int accountNumber, String makeAndModel, String state){
    this.accountNumber = accountNumber;
    this.makeAndModel = makeAndModel;
    this.state = state;
}
//define o accountNumber
public void setAccountNumber(int accountNumber){
    this.accountNumber = accountNumber;
}
//retona accountNumber
public int getAccountNumber(){
    return accountNumber;
}
//configura o makeAndModel
public void setMakeAndModel(String makeAndModel){
    this.makeAndModel = makeAndModel;
}
//retorna makeAndModel
public String getMakeAndModel(){
    return makeAndModel;
}
//define o estado
public void setState(String state){
    this.state = state;
}
//retorna o estado
public String getState(){
    return state;
}
//metodo predicado é retornado se o estado tem seguros "sem culpa"
public boolean isNofaultState(){
    boolean noFaultState;
    //determinad se o estado tem seguros de automovel "sem culpa"
    switch (getState())//obtem a abreviatura do estado do objeto AutoPolicy
    {
        case "MA":case "NJ": case "NY": case "PA":
            noFaultState = true;
            break;
        default:
            noFaultState = false;
            break;
    }
    return noFaultState;
}

}//fim da classe AutoPolicy

Tentei explicar, se não entender estou a disposição!

2 Respostas

D

Deveria ter postado os erros também

/tmp/java_1UhwaR/AutoPolicyTest.java:5: error: cannot find symbol
    AutoPolicy policy2 = new AutoPolicy2(22222222, "Ford Fusion", "ME");
                             ^
  symbol:   class AutoPolicy2
  location: class AutoPolicyTest
/tmp/java_1UhwaR/AutoPolicyTest.java:7: error: non-static method policyInNoFaultState(AutoPolicy) cannot be referenced from a static context
    policyInNoFaultState(policy1);
    ^
/tmp/java_1UhwaR/AutoPolicyTest.java:8: error: non-static method policyInNoFaultState(AutoPolicy) cannot be referenced from a static context
    policyInNoFaultState(policy2);
    ^
/tmp/java_1UhwaR/AutoPolicyTest.java:16: error: cannot find symbol
            (policy.isNoFaultState()? "is": "is not"));
                   ^
  symbol:   method isNoFaultState()
  location: variable policy of type AutoPolicy
4 errors

O “2” depois do AutoPolicy

// AutoPolicy policy2 = new AutoPolicy2(22222222, "Ford Fusion", "ME");
//                                    ^ remover o 2
AutoPolicy policy2 = new AutoPolicy(22222222, "Ford Fusion", "ME");

O método main é static, então só pode chamar métodos statics

// public void policyInNoFaultState(AutoPolicy policy){
//        ^ inserir static
public static void policyInNoFaultState(AutoPolicy policy){

O método isNoFaultState() não existe, observe a letra F

// public boolean isNofaultState(){
//                    ^ trocar para F
public boolean isNoFaultState(){

Usei compilador web
https://www.compilejava.net/

Mike

Antes mesmo de executar ja aparece os erros né…
Método escrito com nome errado e tentar usar um método não estatico dentro de um método estatico gera erro de compilação, ou seja, nem compila, não executa.

Tem uma linha vermelha mostrando onde o erro esta

Criado 27 de março de 2018
Ultima resposta 27 de mar. de 2018
Respostas 2
Participantes 3