【问题标题】:Java Type Mismatch?Java 类型不匹配?
【发布时间】:2017-09-16 14:58:12
【问题描述】:

好的,所以我必须创建一个程序,它是一个停车票模拟器。我编译了它,并且在大多数情况下它都可以工作,除了我得到的这个小的愚蠢错误,它是类型不匹配。代码很多,所以我只给出错误所在的类:

KNW_PoliceOfficerClass

public class KNW_PoliceOfficer 
{ 
  private String name;
  private int badge;
  private static double ticket;

      public KNW_PoliceOfficer() 
      {

      }

      public KNW_PoliceOfficer(String poName, int poBadge) 
      {
        name = poName;
        badge = poBadge;
      }

      public String getName() 
      {
        return name;
      }
      public int getBadge() 
      {
        return badge;
      }

      static KNW_ParkingTicket search(KNW_ParkedCar car, KNW_ParkingMeter meter) 
      {
        int time = KNW_ParkedCar.getMinutes() - KNW_ParkingMeter.getMinPurchased();

        if(KNW_ParkedCar.getMinutes() > KNW_ParkingMeter.getMinPurchased()) 
        {
          if(time <= 60) 
          {
            ticket = 25;
          }
          else 
          {
            ticket = 25 + (10 * (time/60));
          }
          return ticket;
        }


      }

KNW_ParkingTicketClass

 public class KNW_ParkingTicket 
{
  private KNW_ParkedCar vehicle;
  private KNW_PoliceOfficer copster;
  private double fine;
  private int minutes;
  private double firstFine = 25;
  private double moreFine = 10;

  public KNW_ParkingTicket(KNW_ParkedCar car, KNW_PoliceOfficer cop, double guyFine, int mins) 
  {
   vehicle = car;
   copster = cop;
   fine = guyFine;
   minutes = mins;
  }

  public void getTotalFine() 
  {
   int  time = KNW_ParkedCar.getMinutes() - KNW_ParkingMeter.getMinPurchased();

   if(time <= 60) 
   {
    fine = firstFine;
   }
   else 
   {
    fine = firstFine + moreFine * (time / 60);
   }
  }

  public double getFirstFine() 
  {
   return firstFine;
  }
  public double getMoreFine() 
  {
   return moreFine;
  }
  public KNW_ParkedCar getVehicle() 
  {
   return vehicle;
  }
  public KNW_PoliceOfficer getCopster() 
  {
   return copster;
  }
  public int getMinutes() 
  {
   return minutes;
  }
  public double getFine() 
  {
   return fine;
  }


 }

这就是错误所说的:

 File: C:\Users\Kyle Welch\KNW_PoliceOfficer.java  [line: 46]
Error: Type mismatch: cannot convert from double to KNW_ParkingTicket

对此的任何帮助将不胜感激!

【问题讨论】:

  • 哪一行?请显示完整的错误消息。
  • 那段代码有很多错误,包括对静态的误用,调用方法就好像它们应该是静态的一样......你根本没有使用你的方法参数....也许是时候从头开始重写了。
  • 您在KNW_PoliceOffice 中声明ticketdouble,在您的search 方法中您说您将返回KNW_ParkingTicket,但实际上您返回ticket是双倍的。
  • "...and for the most part it works," -- 这就像说“几乎怀孕了”。要么有效,要么无效。
  • 无法从 double 转换为 KNW_ParkingTicket 对我来说看起来像是简单的英语。哪一部分你不明白?

标签: java compiler-errors type-mismatch


【解决方案1】:

问题出在ticket参数上,你是这样定义的:double ticket;

KNW_ParkingTicket 方法中,您可以在此处查看带参数的完整方法:

static KNW_ParkingTicket search(KNW_ParkedCar car, KNW_ParkingMeter meter)

它需要返回KNW_ParkingTicket 类型,但您在其中返回一个名为ticketdouble

return ticket;

【讨论】:

  • 您介意告诉我这是如何工作的吗?我会很感激的!
  • 小心 Mohsen -- 我怀疑我们这里有一个 help vampire
  • @KyleWelch 我不负责为你编写代码,我只回答了操作,这就是发生异常的原因!
  • @DontKnowMuchButGettingBetter 是的!你是对的,我不会再回答了:D
【解决方案2】:

您的 search 方法应该返回 KNW_Parking_Ticket 但您返回 ticket 这是一个 double

【讨论】:

    【解决方案3】:

    NW_PoliceOfficer 类返回类型中的搜索方法是 KNW_ParkingTicket,但您返回的是 double,将方法搜索方法返回类型更改为 double。

    试试这个:

    静态搜索(KNW_ParkedCar 车,KNW_ParkingMeter 计价器){ int time = KNW_ParkedCar.getMinutes() -KNW_ParkingMeter.getMinPurchased();

    if(KNW_ParkedCar.getMinutes() > KNW_ParkingMeter.getMinPurchased()) {

          if(time <= 60) 
          {
            ticket = 25;
          }
          else 
          {
            ticket = 25 + (10 * (time/60));
          }
          return ticket;
        } 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多