几个问题。我正在创建一个搜索元素对象数组的方法(其中每个元素对象都已使用[atomicNumber缩写名称atomicWeight]进行初始化)。我还需要返回对元素的引用' - 不确定如何执行此操作。用户在main中输入缩写,然后在数组上使用findAbbreviation方法。 toString方法格式化并将每个数据类型作为String返回。我如何在整个数组的任何给定对象中搜索缩写位置。我如何返回对该元素的引用'宾语。
public class PeriodicTable {
private final int MAX_ELEMENTS = 200;
private PeriodicElement[] table;
private int actualSize;
public PeriodicTable() throws IOException{
table = new PeriodicElement[MAX_ELEMENTS];
Scanner input = new Scanner(new File("file name here"));
int index = 0;
while(input.hasNext() && index < MAX_ELEMENTS) {
int aN = input.nextInt();
String abbr = input.next();
String name = input.next();
double aW = input.nextDouble();
table[index] = new PeriodicElement(aN, abbr, name, aW);
index++;
}
input.close();
actualSize = index;
}
public String findAbbreviation(String abbreviationP){
boolean found = false;
int index = 0;
while(found && index < MAX_ELEMENTS){
if (table[index] = table[abbreviationP]){
found = true;
return table[index].toString;
}
index++;
}
return null;
}
}
class PeriodicElement {
private int atomicNumber;
private String abbreviation, name;
private double atomicWeight;
public PeriodicElement(int atomicNumberP,
String abbreviationP, String nameP,
double atomicWeightP){
atomicNumber = atomicNumberP;
abbreviation = abbreviationP;
name = nameP;
atomicWeight = atomicWeightP;
}
答案 0 :(得分:0)
首先,您需要一个数组或元素集合。这可能是您当前正在撰写的课程的实例变量,其中包括&#39; findAbbreviation&#39;。
第二,&#34;元素&#34;可以简单地有一个属性变量,如&#34;缩写&#34;作为Element类的实例变量,您可能只能在列表中调用findAbbreviation并在缩写实例变量中专门搜索该缩写。您不太可能搜索实际名称来查找缩写,例如:Gold&#34;&#34;缩写&#34;是AU。
您能说明如何定义元素列表以及定义元素的类吗?
如果您只是查看元素缩写列表(正如您当前的代码所示),您可能只需修复当前代码即可正确进行等效比较:
public String findAbbreviation(String abbreviationP){
boolean found = false;
int index = 0;
while(!found && index < MAX_ELEMENTS){ //this should be !found instead of found
if (table[index].equals(abbreviationP)) { // you previously had an assignment statement in this if
found = true;
return table[index].toString;
}
index++;
}
return null;
}
更新答案以反映问题的更新:
首先,您需要在PeriodicElement类中提供一个方法来获取实例变量&#34;缩写&#34;。
这是一个标准的&#34; getter&#34;:
public String getAbbreviation() {
return abbreviation;
}
其次,您想要更新findAbbreviation方法以使用这个新的getter:
public PeriodicElement findAbbreviation(String abbreviationP){
boolean found = false;
int index = 0;
while(!found && index < MAX_ELEMENTS){ //this should be !found instead of found
if (table[index].getAbbreviation().equals(abbreviationP)) { // you previously had an assignment statement in this if
found = true;
return table[index]; //This will return the object at the index where it was found.
// Notice I also changed the return type on your function.
}
index++;
}
return null;
}