如何在另一个类中调用实例变量if if

时间:2016-01-18 17:56:44

标签: java

以下是教师为我们提供的问题:我不确定如何创建一个if语句来检查我在BikeTester类中创建的变量。我正在使用的变量在Bike Class中被声明为实例变量。谁能帮助我解决自行车运动员课程中的第4步?

自行车课程

  1. 创建一个名为Bike的类,它只包含以下实例变量:

    • 轮数

    • 轮胎直径

    • 制造商名称

    • 建成年份

  2. 创建无参数构造函数

  3. 创建使用所有字段作为参数的构造函数

  4. 为所有实例变量编写getter和setter方法

  5. 使用上面显示的示例覆盖toString方法

  6. Bike类中应该没有主要方法。

    BikeTester类

    1. 创建一个名为BikeTester的类,它构造10个不同的Bike对象

    2. 将每个Bike对象添加到数组

    3. 使用for循环来SOP每个自行车参考

    4. 使用第二个for循环到SOP只有那些在2004年之后制造并且车轮直径大于4的自行车

    5. 我在最后一步(第2部分的第4步)。

      我有以下代码:

      //来自Bike Class的四个参数构造函数

        

      公共自行车(int wheel,double tyre,String manuf,int year)

      {
      
      numWheels = wheels;
      
      diameterOfTires = tires;
      
      manufacturer = manuf;
      
      yearBuilt = year;
      
      }
      
      Bike bike10 = new Bike(5, 2.5, "Bob", 1995); 
      

      //排除了其他9个自行车对象以便掌握这个想法。

      Bike[] bikes = new Bike[10]; 
      
      bikes[0] = bike1;
      bikes[1] = bike2;
      bikes[2] = bike3;
      bikes[3] = bike4;
      bikes[4] = bike5;
      bikes[5] = bike6;
      bikes[6] = bike7;
      bikes[7] = bike8;
      bikes[8] = bike9;
      bikes[9] = bike10;
      

      // 第4步我需要帮助

      for(int y = 0; y< bikes.length; y ++)//我的循环解决问题(不起作用)

      {

        if(yearBuilt > 2004 && diameterOfTires > 4)
      

      {

         System.out.println(bikes[y]); 
        }
      

      }

      谢谢!任何帮助都会很好,因为我试图解决这个问题!

2 个答案:

答案 0 :(得分:0)

自行车应该有一个属性,让你可以得到年份。

您可以使用

for (Bike b : bikes) {
    if(b.getYearBuilt() > 2004 && b.getTireDiameter() > 4) {
        // whatever you want to do here.
    }
}

或者如果您需要使用索引for循环,可以使用

for (int i = 0; i < bikes.length; i++) {
    if(bikes[i].getYearBuilt() > 2004 && bikes[i].getTireDiameter() > 4) {
        // whatever you want to do here.
    }
}

答案 1 :(得分:0)

运行代码时,您的问题不清楚是什么问题。不编译,你是否得到例外,是否打印出你不想要的东西,或者你什么都不看?

但是,我可以就如何解决这个问题提出一般性建议。如果您在Bike类(int getNumWheels()void setNumWheels(int)等)中创建了setter和getter,则可以使用它们来获取每个自行车的实例变量。

for (y = 0; y < bikes.length; y++) {
    if (bikes[y].getYearsBuilt() > 2004 && bikes[y].getDiameterOfTires() > 4) {
        System.out.println(bikes[y]);
  }
}

这段代码会循环遍历你的自行车数组(前提是你在与这段代码相同的类中声明它,否则你必须先得到它。

对于循环的每次迭代,您必须选择一个特定的自行车来测试构建年份和轮胎直径。为此,您使用循环索引y来获取Bike对象,然后调用相关的getter。

每当if语句为真时,都会调用System.out.println(bikes[y])来打印出Bike类的String toString()方法。如果您没有覆盖该方法,则只会看到类名和哈希码(例如java.lang.String@a132d3)。