当前位置: 首页 > 知识库问答 >
问题:

表达式的类型必须是数组类型,但它解析为

茹高义
2023-03-14

我是爪哇的新手。我不明白为什么会发生这些错误。尝试创建一个数组列表,以便它保存每个对象。我得到的错误是 表达式的类型必须是数组类型,但它解析为数组列表上的行“newbug1[i].setpecies();”

提前致谢

import javax.swing.JOptionPane;
import java.util.ArrayList;

public class Abug2 {
    private String species;
    private String name;
    private char symbol = '\0'; 
    private int horposition = 0, verposition = 0, energy = 0, uniqueID = 1, counter; 


    public Abug2(String species, String name, char symbol)
    {
        uniqueID = counter;
        counter++;
    }


    public void setspecies(){
    species = JOptionPane.showInputDialog(null, "Enter the species: ");
    }
    public String getspecies(){
        return species;
    }

    public void setname(){
    name = JOptionPane.showInputDialog(null, "Enter the name: ");
    }
    public String getname(){
    return name;
    }

    public void setsymbol(){
    symbol = name.charAt(0);
    }
    public char getsymbol(){
        return symbol;
    }

    public int getid(){
        return uniqueID;
    }

    public int gethorizontal(){
    return horposition;
    }

    public int getvertical(){ 
        return verposition;
    }

    public int getenergy(){
        return energy;
    }

    //The class ABug has a set of methods: two or more constructors, toString, toText, and getters and setters for the attributes 

    public String toString(){
        String tostring = "\nName: " + name + "\nHorizontal Position: " + horposition + "\nVertical Position: " + verposition + "\n";
                return tostring;
    }

    public String toText(){
        String totext = getspecies() + getname() + getsymbol() + getid() + gethorizontal() + getvertical() + getenergy();
                return totext;
    }


    public static void main (String [] args){       

        ArrayList<Abug2> newbug1 = new ArrayList<Abug2>();

        String choice = JOptionPane.showInputDialog(null, "Would you like to add another bug?: ");
            do{for (int i = 0; i < 3; i++) {

                newbug1.add(new Abug2("Bug", "Spider", 's'));

                newbug1[i].setspecies();
                newbug1[i].setname();
                newbug1[i].setsymbol();

                System.out.println(newbug1[i].toString());

            }       }while(choice != "yes");
            }

}

共有2个答案

韩经武
2023-03-14

为了访问数组列表中的元素,您必须使用一个名为 get 的方法

在您的代码中,将< code>newbug1[i]替换为< code>newbug1.get(i)

此外,您应该将该引用存储在变量中,而不是一次又一次地调用它:

Abug2 currentBug = newbug1.get(i);
currentBug.setSpecies();   

您的代码将变得更加清晰。

国言
2023-03-14

对于数组列表,请改用 get():

newbug1.get(i).setspecies();
newbug1.get(i).setname();
newbug1.get(i).setsymbol();

因为它存储对象引用,所以任何 setFoo 调用都会影响数组列表中引用的原始对象。

 类似资料:
  • 我不知道我的代码发生了什么。我似乎无法弄清楚为什么数组会给我这个错误。该行是特别是 我的代码:

  • 我在代码中收到“必须是数组类型,但它解析为字符串”错误。它还说i(在下面的代码中)不能解析为我没有得到的变量。 } 你们能帮我找出问题所在吗?我是Java编码的新手,所以我对这种格式还不完全满意。 非常感谢,朱奈德

  • 问题内容: 在不同数据库之间进行切换时,关于包含大对象(BLOB)的hibernate映射,我有一个奇怪的问题。 上面的字段在MySQL和Oracle中创建一个字节数组字段,但是在PostreSQL中,它创建一个oid类型的字段。 现在,当我尝试访问该字段时,它在其他数据库中也能正常工作,但是在PostgreSQL中,它失败并显示以下错误 因此,我试图简单地删除“ @Lob”注释,这将解决Post

  • 在我将PostgreSQL 13个数据库列标记更改为jsonb后,执行sql时抛出错误: 在使用mybatis时,我应该如何处理spring boot应用程序中的jsonb?

  • 我正在尝试实现一个示例库,客户端可以使用它来执行他们的代码,为了实现它,我使用了Java的函数式编程特性。但获取编译错误此表达式的目标类型必须是函数接口 请说说我缺了什么。

  • 我正在学习Apollo和graphQL,并将其集成到我的一个项目中。到目前为止一切正常,但现在我正在尝试一些突变,我正在努力处理输入类型和查询类型。我觉得事情比实际情况要复杂得多,因此我正在寻求如何处理我的情况的建议。我在网上找到的示例都是非常基本的模式,但现实总是更加复杂,因为我的模式非常大,如下所示(我只复制一部分): 然后定义输入和负载,依此类推... 为此,我需要一个变异来保存“计算”,因