这似乎是一个非常简单的问题,但我不确定我是否正确使用这些构造函数。如果您可以查看并告诉我为什么当我尝试打印此数据时,它会显示(我假设是(数据位置。我想不出办法让它打印出名称、凝固点、沸点和单位数。也欢迎任何关于提高效率的建议。
这是头等舱
public class ChemicalInventory {
public static void main(String[] args) {
listInventory();
}
public static void listInventory(){
Chemical Ethanol = new Chemical("Ethanol", "-173", "172", "1575");
Chemical Oxygen = new Chemical("Oxygen", "-363", "-306", "1000");
Chemical Water = new Chemical("Water", "32", "212", "5000");
Chemical Benzene = new Chemical("Benzene", "41.9", "176.2", "2750");
Chemical EthyleneGlycol = new Chemical("Ethylene Glycol", "8.78", "378", "1900");
System.out.println("Current Chemical Inventory: ");
System.out.println(Ethanol);
System.out.println(Oxygen);
System.out.println(Water);
System.out.println(Benzene);
System.out.println(EthyleneGlycol);
}
}
这是第二类。
public class Chemical {
private String chemName;
private String chemFreezingPoint;
private String chemBoilingPoint;
private String chemUnitNumbers;
public Chemical(String name, String freezingPoint, String boilingPoint, String unitNumbers){
chemName = name;
chemFreezingPoint = freezingPoint;
chemBoilingPoint = boilingPoint;
chemUnitNumbers = unitNumbers;
}
//String[][] chemArray = new String [5][4];
String[][] chemArray = {{"Ethanol","-173","172","1575"},{"Oxygen","-363","-306","1000"},{"Water","32","212","5000"},
{"Benzene","41.9","176.2","2750"},{"Ethylene Glycol","8.78","378","1900"}};
}
这是我运行程序时得到的:
Current Chemical Inventory:
Chemical@15db9742
Chemical@6d06d69c
Chemical@7852e922
Chemical@4e25154f
Chemical@70dea4e
因为当前您正在打印对对象的引用。尝试这样的事情:
System.out.println(Ethanol.toString());
这应该为您提供对象内的数据。
此外,您可以重写 toString(( 方法并编写自己的实现。
像这样:
public class Chemical {
private String chemName;
private String chemFreezingPoint;
private String chemBoilingPoint;
private String chemUnitNumbers;
public Chemical(String name, String freezingPoint, String boilingPoint, String unitNumbers){
chemName = name;
chemFreezingPoint = freezingPoint;
chemBoilingPoint = boilingPoint;
chemUnitNumbers = unitNumbers;
}
//String[][] chemArray = new String [5][4];
String[][] chemArray = {{"Ethanol","-173","172","1575"},{"Oxygen","-363","-306","1000"},{"Water","32","212","5000"},
{"Benzene","41.9","176.2","2750"},{"Ethylene Glycol","8.78","378","1900"}};
public String toString(){
return // Return the string in the format you want here...
}
}
你的构造函数很好。这里实际上没有什么坏处。在java中,每个类都有一个默认的toString((方法,它可以打印出你在那里看到的内容。您可以免费获得它,但它的信息量不是很大。
尝试将其添加到您的化学类中:
public String toString(){
return "I am a chemical:" + name;
}
并根据需要进行扩展。
你需要像这样重写 toString(( 方法:
@Override
public String toString() {
return "Chemical [chemName=" + chemName + ", chemFreezingPoint=" + chemFreezingPoint + ", chemBoilingPoint="
+ chemBoilingPoint + ", chemUnitNumbers=" + chemUnitNumbers + "]";
}
您可以根据需要设置返回语句的格式。
您的构造函数没有问题,绝对没问题。