我一直在做这个项目,所以我了解了如何使用自定义对象和自定义对象类型。我遇到的问题是当我写出System.out.println(fe1.TestAuto(时;上面写着需要标识符,我不知道为什么。我正试着把这个物体打印出来,但不起作用。我遇到的另一个问题是,当我想使用discountValue((方法对成本进行折扣时,它说double不能转换为Feature,我不知道为什么。
discountValue((方法接收来自双c的输入,并用Feature Class中的双d减去该输入。
下面是我的代码。有人能帮我吗?
public class Auto
{
public String name;
public double size;
public Auto(String s, double sz){
name = s;
size = sz;
}
//step 2: method showFeature()
public Feature showFeature(Feature f){
System.out.println("The feature " +f+" costs: "+f.cost);
}
public Feature discountValue(String s, double c, double d){
//Step 3: method to give discount on cost
double z = c - d.cost;
return z;
}
}
public class TestAuto
{
public static void main(String args[]){
//instantiate an Auto object
Auto at = new Auto("AMG", 73.5);
//instantiate a Feature object
Feature fe = new Feature("Leather Seat", 3000);
//execute method addFeature with Feature object
at.showFeature(fe);
//prepare a new Feature object for receving information
Feature fe1 = new Feature("", 0);
//Run method discountValue with a feature and a new value
fe1 = at.discountValue("GPS", 15000, 0.2);
//print out the object
System.out.println(fe1);
}
}
public class Feature
{
public String name;
public double cost;
public Feature(String s, double d){
//step 1
name = s;
cost = d;
}
//step 4
System.out.println(fe1.TestAuto);
}
double z = c - d.cost;
d
属于double
类型。它没有cost
字段。事实上,它是一个基元,一开始就不能取消引用(在双精度后面加一个点是编译器的即时错误(。
(在Feature.java中(
System.out.println(fe1.TestAuto);
你不能在这里写这篇文章;在类def中,可以定义字段、方法、构造函数、初始值设定项和内部类型。但不是实际的代码(它什么时候运行?(——因此,这是实际的代码,不合法。把它放在一个方法或构造函数或诸如此类的东西中。
不能调用System.out.println(fe1.TestAuto);
(步骤4(,因为它不在类Feature
的方法中。如果去掉这一行,剩下的就行了(只需从d.cost
中去掉.cost
即可。
我不明白你为什么叫你的班TestAuto
,谁是你的主要学生。