【问题标题】:Getting prints more than required in java在 java 中获得超出要求的打印
【发布时间】:2021-12-27 17:31:41
【问题描述】:

我正在编写 java 代码,我应该使用递归方法,我的方法应该 Search() 将 Car 对象 ARR 和 Car 对象 C 的数组作为参数。此方法 如果 C 在 ARR 内,则应返回 true,否则返回 false。 b,方法 findCylinders 将 Car 对象数组 ARR 和汽缸数作为参数 发动机 N。它应该显示所有具有 N 缸发动机的汽车 我的代码运行良好,但它会多次打印该对象。

public class Test_Car_Lab9{
   public static void main(String [] args){
      Car[] ARR = new Car[50];
      for(int i = 0; i < ARR.length; i++){
         ARR[i] = new Car(3500, 6, "Mazda", "MX6");
      }
      Car C = new Car(4700, 8, "Nissan", "Patrol");
      System.out.println(Search(ARR, C));
      findCylinders(ARR, 6);
   }
   public static boolean Search(Car[] carsArray, Car carObject){
      for(int i = 0; i < carsArray.length; i++){
         if(carObject.getMake() == carsArray[i].getMake() && 
         carObject.getModel() == carsArray[i].getModel() &&
         carObject.getCylinders() == carsArray[i].getCylinders() &&
         carObject.getHorsePower() == carsArray[i].getHorsePower())
            return true;
      }
      return false;
   }
   public static void findCylinders(Car[] carsArray, int numOfCylinders){
      for(int i = 0; i < carsArray.length; i++){
         if(carsArray[i].getCylinders() == numOfCylinders)
            carsArray[i].printCarData();   
      }
   }
}

非常感谢任何帮助。

【问题讨论】:

  • 打印“无限”还是“多次”?这些有点不同。您在阵列中添加了 50 个具有 6 个气缸的 Mazda MX6,因此在您的阵列中搜索具有 6 个气缸的条目时,您应该期望它会找到这 50 个对象并打印每个对象。
  • 您的问题是使用 == 而不是 String.equals 来比较字符串值
  • @OHGODSPIDERS 不是无限的,但很多时候是的。
  • 喜欢 50 次?正如我所说,您有一个包含 50 次 Car(3500, 6, "Mazda", "MX6") 的数组,因此,当您告诉程序搜索并输出所有具有 6 个气缸的汽车时,将该汽车打印 50 次就是正确答案。你甚至打算用 50 倍于同一辆车来填充你的阵列吗?
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: java arrays recursion methods


【解决方案1】:

您的问题是 == 与字符串进行比较,而不是字符串等于。

   public static boolean Search(Car[] carsArray, Car carObject){
      for(int i = 0; i < carsArray.length; i++){
         if(carObject.getMake().equals(carsArray[i].getMake()) && 
         carObject.getModel().equals(carsArray[i].getModel()) &&
         carObject.getCylinders() == carsArray[i].getCylinders() &&
         carObject.getHorsePower() == carsArray[i].getHorsePower())
            return true;
      }
      return false;

【讨论】:

  • 它直到现在才起作用。
  • 虽然这是一个问题,但我认为这不是造成“多次打印”的 OP 问题的原因。他们在示例代码中搜索的汽车无论如何都不是数组的一部分,因此搜索方法返回 false 的事实实际上是一个意外的正确结果。
  • @OH GOD SPIDERS 你建议我做什么?因为我还需要制作 50 个对象的数组。
猜你喜欢
  • 2013-11-08
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多