以下是教师为我们提供的问题:我不确定如何创建一个if语句来检查我在BikeTester类中创建的变量。我正在使用的变量在Bike Class中被声明为实例变量。谁能帮助我解决自行车运动员课程中的第4步?
自行车课程
创建一个名为Bike的类,它只包含以下实例变量:
轮数
轮胎直径
制造商名称
建成年份
创建无参数构造函数
创建使用所有字段作为参数的构造函数
为所有实例变量编写getter和setter方法
使用上面显示的示例覆盖toString方法
Bike类中应该没有主要方法。
BikeTester类
创建一个名为BikeTester的类,它构造10个不同的Bike对象
将每个Bike对象添加到数组
使用for循环来SOP每个自行车参考
使用第二个for循环到SOP只有那些在2004年之后制造并且车轮直径大于4的自行车
我在最后一步(第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]);
}
}
谢谢!任何帮助都会很好,因为我试图解决这个问题!
答案 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
)。