Duvida - Método não está retornando um valor correto

2 respostas
Z

Olá estou aprendendo programação orientado à objetos com o Java, e tem um exercício aonde tenho que utilizar um método que calcula e retorna o valor do desconto, só que ele está retornando sempre o desconto sempre como 0. Segue o código-fonte abaixo:

Passagem.java

/*

  • Passagem.java
  • Created on 6 de Abril de 2006, 22:50
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

/**
*

  • @author Ricardo
    
    */
    
    public class Passagem {
    
    private int numero, poltrona;
    
    private String tipo;
    
    private double valor;
    

    public Passagem() {
    }

    /** Construtor que Inicializa o Número e Valor da Passagem */
    
    public Passagem(int numero, double valor) {
    
    this.numero = numero;
    
    this.valor = valor;
    
    }
    
    /** Devolve o Número da Passagem */
    
    public int getNumero() {
    
    return numero;
    
    }
    
    /** Configura o Tipo de Passagem */
    
    public void setTipo(String tipo) {
    
    this.tipo = tipo.toUpperCase();
    
    }
    
    /** Devolve o Tipo de Passagem */
    
    public String getTipo() {
    
    return tipo;
    
    }
    
    /** Configura o Número da Poltrona */
    
    public void setPoltrona( int poltrona) {
    
    this.poltrona = poltrona;
    
    }
    
    /** Devolve o Número da Poltrona */
    
    public int getPoltrona() {
    
    return poltrona;
    
    }
    
    /** Devolve o Valor da Passagem */
    
    public double getValor() {
    
    return valor;
    
    }
    
    /** Calcula e Devolve o Valor de Desconto */
    
    public double obterValDesc() {
    
    double desconto = 0.0;
    
    if(getTipo() == "C")
         desconto = 0;
     else if(getTipo() == "E")
         desconto = getValor() * 0.15;
     else if(getTipo() == "I")
         desconto = getValor() * 0.25;
     
     return desconto;
    

    }

    /** Calcula e Devolve o Valor à Pagar */
    
    public double obterValPagar() {
    
    return getValor() - obterValDesc();
    
    }
    
    }
    

Aplicativo.java

/*

  • Aplicativo.java
  • Created on 6 de Abril de 2006, 23:18
  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

/**
*

  • @author Ricardo
    */
    import java.util.Scanner;

public class Aplicativo {

public static void main(String[] args) {
    /** Cria um Scanner para Obter entrada de dados pelo Usuário */
    Scanner entrada = new Scanner(System.in);
    
    /** Cria um objeto da classe Passagem */ 
    Passagem passagem = new Passagem(154, 18.50);
    
    String tipo; /** Tipo da Passagem */
    int poltrona; /** Número da Poltrona */
    
    /** Entrada de Dados */
    System.out.print("Insira o Tipo da Passagem - (C) Comun, (E) Estudan" +
            "te ou (I) Idoso :");
    passagem.setTipo(tipo = entrada.nextLine());
    
    System.out.print("Insira o Número da Poltrona: ");
    passagem.setPoltrona(poltrona = entrada.nextInt());
    
    /** Exibe o Resultado */
    System.out.printf("\n\n- - - - - DADOS DA PASSAGEM - - - - -\n");
    System.out.printf("Número da Passagem: %d\n", passagem.getNumero());
    System.out.printf("Número da Poltrona: %d\n", passagem.getPoltrona());
    System.out.printf("Tipo: %s\n", passagem.getTipo());
    System.out.printf("Valor: R$ %,.2f\n", passagem.getValor());
    System.out.printf("Desconto: R$ %,.2f\n", passagem.obterValDesc());
    System.out.printf("Valor à Pagar: %,.2f\n", passagem.obterValPagar());
}

}

2 Respostas

A

Olá.
String é um objeto e vc tem que usar o método equals() da String.
Se vc usar “==” e a referencia não for a mesma o resultado vai ser sempre falso.
Substitua nos ifs do seu método obterValDesc()

Z

Valeu, pela ajuda… Vou fazer as mudanças aqui… Muito Obrigado

Criado 7 de abril de 2006
Ultima resposta 7 de abr. de 2006
Respostas 2
Participantes 2