2017-04-23 128 views
-1

我的问题是我需要从Element类中获取符号。 我通常会在PeriodicTable中建立一个对象,如下所示: Element e = new Element(); 然后在方法内使用e.getSymbol以便将其用于比较。因此,为了完成第一项任务并打印整个元素列表,我在PeriodicTable中声明了如下的数组: Element [] objects = new Element [ARRAY_SIZE]; 我猜我正确地宣布它,因为它确实运行整个元素列表。将一个类的方法传递给另一个

同样,我有问题getSymbol进入我的PeriodicTable方法。 有什么有用的建议吗?

对于这种方法,用户将输入一个元素的符号。该方法将搜索元素并返回其索引(在数组中)。然后,它将使用索引来使用Element类中的toString方法显示该单个元素及其所有其他信息。

public int searchBySymbol(String sym) 
    {  
     int index = 0; 
     boolean found = false; 

     for (int i = 0; i < objects.length; i++) 
     { 
      objects[i] = objects.getSymbol; 
     } 
     while (index < objects.length && !found) 
     { 
      if (objects[index].equals(sym)) 
      { 
       found = true; 
      } 
      else 
      { 
       index++; 
      } 
     }  
     if(found) 
     { 
      System.out.println("Found at position: " + index); 
      System.out.println(objects[index].toString()); 
     } 
     else 
     { 
      System.out.println("Not found"); 
     }  
    } 
+0

请显示您的代码,而不是描述它。帮助你会容易得多! –

+0

我试过,但我在VPN上,它不会复制。也许如果我登录VPN在这里......将尝试。 – KitKat2

+0

对于这种方法,用户将输入一个元素的符号。该方法将搜索元素并返回其索引(在数组中)。然后,它将使用索引来使用Element类中的toString方法显示该单个元素及其所有其他信息。 – KitKat2

回答

-1

你绝对不需要在那里首先的两个循环,有两个解决办法:

  1. (推荐)如果符号搜索元素将是你的主要途径查找元素,考虑使用HashMap来包含数据而不是元素数组,因为HashMaps允许通过key查找对象,例如HashMap<String, Element>。查找的HashMap API或检查这个例子:http://beginnersbook.com/2013/12/hashmap-in-java-with-example/

  2. (快速修复),而不是使用两个循环获取字段和比较,在Java这是很好的做法,定义了访问方法,如getSymbol(),并返回现场而不是直接访问它。使用这种方法可以简化你的代码...

    for (Element e : objects) { 
        if (e.getSymbol().equals(sym) { 
        return true; 
        } 
    } 
    //return false after the loop omits the need for an explicit boolean variable` 
    

编辑:通常的for循环构建索引访问。索引编号基本上由迭代器变量int i进行跟踪,因此您不需要单独的变量来跟踪它。

for (int i = 0; i < objects.length; i++) { 
    if (objects[i].getSymbol().equals(sym)) { 
     //print i to show index number 
     //print objects[i].toString(); 
     return true; 
    } 
} 
//print not found... 
return false; 
+0

所以我只需要在这个方法中进一步编码,以便返回符号的索引并且还使用索引来返回其余的信息。关于元素? – KitKat2

+0

是的 - 如果你需要索引,然后使用一个正常的循环,使事情更容易阅读,我编辑了我的帖子,并添加了另一个例子。 – PandaK