编译错误,但我找不到原因

时间:2015-06-18 17:46:24

标签: java compilation

我正在尝试用Java编译代码以返回一个布尔值,他正在调用另外两个方法,但是,由于一些奇怪的原因,它没有识别方法的名称。

编译器发给我这个错误: 找不到符号,方法transaccionMaquina(Producto,Tarjeta)

以下是代码:

import java.util.Scanner;
public class Maquina
{
    Maquina ()
    {
    }

    public boolean transaccionMaquina(Tarjeta TjtNuevo, Producto PrdNuevo)
    {
                if (PrdNuevo.getPrecio()<= TjtNuevo.getSaldoTarjeta())
                {
                   PrdNuevo.setStock(PrdNuevo.getStock()-1);
                   TjtNuevo.setSaldoTarjeta(TjtNuevo.getSaldoTarjeta()-PrdNuevo.getPrecio());
                   return true;
                }
                else
                {
                    return false;
                }
     } 
}

任何问题,建议或建设性的批评,都会非常感激

这是拥有我正在调用

方法的类的代码

这是我正在尝试添加它的菜单类中的地方

 // MÉTODOS (Ver Después)

public boolean ventaEfectivo(Producto PrdNuevo, Cliente ClntNuevo)
{
    int intPrecio = PrdNuevo.getPrecio();
    int intDineroDisponible = ClntNuevo.getDineroDisponible();
    int intStock = PrdNuevo.getStock();
        if (intDineroDisponible>=intPrecio)
        {
            intDineroDisponible = intDineroDisponible - intPrecio;
            ClntNuevo.setDineroDisponible(intDineroDisponible);
            intStock = intStock - 1;
            PrdNuevo.setStock(intStock); 
            return true;
        }
        else
        {
            return false;
        }
}

public boolean pagoProducto(Producto PrdNuevo, Cliente ClntNuevo, Tarjeta TjtNuevo, int intOpcion)
        {
            switch(intOpcion) {
                case 1:

                    return ventaEfectivo(PrdNuevo, ClntNuevo);

                break;

                case 2:

                    return transaccionMaquina(PrdNuevo, TjtNuevo);
                break;

                default:
            }   
        }

提前致谢。

3 个答案:

答案 0 :(得分:0)

您的参数以原始方法定义:

public boolean transaccionMaquina(Tarjeta TjtNuevo, Producto PrdNuevo)

你这样称呼它:

return transaccionMaquina(PrdNuevo, TjtNuevo);

简而言之,争论是相反的。

答案 1 :(得分:0)

您在调用方法时已经互换了参数,因此与方法签名不匹配:

public boolean transaccionMaquina(Tarjeta TjtNuevo, Producto PrdNuevo) { ... }

public boolean pagoProducto(Producto PrdNuevo, Cliente ClntNuevo, Tarjeta TjtNuevo, int intOpcion){
    ...
    case 2:  return transaccionMaquina(PrdNuevo, TjtNuevo);
    ....
}

答案 2 :(得分:0)

你的片段对我来说不是很清楚。根据我的解释,调用transaccionMaquina()的代码在另一个类中,可能这些类不在层次结构中。你需要创建一个Maquina类的对象。然后使用它调用transaccionMaquina。

Maquina m = new Maquina();
m.transaccionMaquina()

你可能应该阅读面向对象的编程来清除你的概念