Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个类的方法传递给另一个类_Java_Arrays - Fatal编程技术网

Java 将一个类的方法传递给另一个类

Java 将一个类的方法传递给另一个类,java,arrays,Java,Arrays,我的问题是我需要从元素类中获取符号。 我通常会在PeriodicTable中创建一个对象,如下所示: 元素e=新元素(); 然后在方法中使用e.getSymbol以便将其用于比较 因此,为了完成第一个任务并打印整个元素列表,我在PeriodicTable中声明了一个数组,如下所示: 元素[]对象=新元素[数组大小]; 我猜我正确地声明了它,因为它确实运行了整个元素列表 同样,在PeriodicTable中将getSymbol放入方法时遇到问题。 有什么有用的建议吗 对于此方法,用户将为元素输入符

我的问题是我需要从元素类中获取符号。 我通常会在PeriodicTable中创建一个对象,如下所示: 元素e=新元素(); 然后在方法中使用e.getSymbol以便将其用于比较

因此,为了完成第一个任务并打印整个元素列表,我在PeriodicTable中声明了一个数组,如下所示: 元素[]对象=新元素[数组大小]; 我猜我正确地声明了它,因为它确实运行了整个元素列表

同样,在PeriodicTable中将getSymbol放入方法时遇到问题。 有什么有用的建议吗


对于此方法,用户将为元素输入符号。该方法将搜索元素并返回其索引(在数组中)。然后,它将使用元素类中的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");
        }       
    }
public int searchBySymbol(字符串sym)
{       
int指数=0;
布尔值=false;
for(int i=0;i
这里绝对不需要两个循环首先,有两种解决方案:

  • (推荐)如果按符号搜索元素将是查找元素的主要方式,请考虑使用<代码> HashMap <代码>来包含数据而不是元素数组,因为HasMead允许使用“代码>键< /代码>查找对象,例如<代码> HashMap < /代码>。查找

    HashMap
    API或检查以下示例:

  • (快速修复)与使用两个循环来获取字段并进行比较不同,在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`
    
  • 编辑:通常用于索引访问的循环构造。索引号基本上由迭代器变量
    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;
    
    for(int i=0;i
    请显示您的代码,而不是描述代码。帮助你会容易得多!我试过了,但我在一个VPN上,它不会复制过来。也许如果我在VPN上登录到这里。。。。将尝试。对于此方法,用户将为元素输入符号。该方法将搜索元素并返回其索引(在数组中)。然后,它将使用元素类中的toString方法,使用索引显示单个元素及其所有其他信息<代码>对象[i]=对象。getSymbol无效。@MasterYushi否,因为
    对象
    是一个数组,没有字段
    getSymbol
    。数组对象是一种语言构造,因此它是不可重写的。因此,我只需要在这个方法中进一步编码,以便返回符号的索引,并使用index-to-code返回其余信息。关于元素??是的-如果你需要索引,那么使用一个普通的for循环来让事情更容易阅读,我已经编辑了我的文章并添加了另一个例子。