Java 编译错误,但我可以';我找不到原因

Java 编译错误,但我可以';我找不到原因,java,compilation,Java,Compilation,我试着用Java编译一段代码来返回一个布尔值,他调用了另外两个方法,但是,出于一些奇怪的原因,他无法识别这个方法的名称 编译器向我发送此错误: 找不到符号,方法transaccionMaquina(Producto,Tarjeta) 代码如下: import java.util.Scanner; public class Maquina { Maquina () { } public boolean transaccionMaquina(Tarjeta TjtN

我试着用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;
                }
     } 
}

提前感谢。

您的参数在原始方法中定义如下:

public boolean transaccionMaquina(Tarjeta TjtNuevo, Producto PrdNuevo)
return transaccionMaquina(PrdNuevo, TjtNuevo);
你这样称呼它:

public boolean transaccionMaquina(Tarjeta TjtNuevo, Producto PrdNuevo)
return transaccionMaquina(PrdNuevo, TjtNuevo);

简而言之,参数是相反的。

调用方法时交换了参数,因此与方法签名不匹配:

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

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

你的片段我不太清楚。根据我的解释,调用transaccionMaquina()的代码位于另一个类中,这些类可能不在层次结构中。您需要创建一个Maquina类的对象。然后用它给transaccionMaquina打电话

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

您可能应该阅读面向对象编程来明确您的概念

您调用的
transaccionMaquina(Producto,Tarjeta)
,但是方法签名是
transaccionMaquina(Tarjeta,Producto)
。。。您现在看到错误了吗?您的方法声明为
transaccionMaquina(Tarjeta-TjtNuevo,Producto-PrdNuevo)
,但您的方法调用使用的是
(PrdNuevo,TjtNuevo)
。转换你的论点。介意解释一下-1吗?因为两个答案都“立即”被否决了,我想选民不会告诉你为什么。是的,这很烦人。@Tom,很高兴知道——只是想确保我没有误解你的意图。有时候,你会因为没有(明显的)原因而被否决。我们对此无能为力,但既然你已经在这里呆了一段时间,我想你已经知道:D.很酷——上次我被否决是因为我完全误解了这个问题:我同意参数混淆,但基于代码不能说pagoProducto()在同一个类中。他也需要调查一下。