如何在字符串数组中搜索特定的单词位置

时间:2017-03-16 03:00:33

标签: java arrays return

几个问题。我正在创建一个搜索元素对象数组的方法(其中每个元素对象都已使用[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;
    }

1 个答案:

答案 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;
}