【问题标题】:Java arrays in classes and methods类和方法中的 Java 数组
【发布时间】:2017-03-12 20:02:59
【问题描述】:

我是 Java 新手,完全陷入类中的数组中。在使用数组时,一直试图找出 set 和 get 方法的答案,不幸的是,我无法理解问题的实际所在。 非常感谢有人可以帮助解决这个问题。 这是我的代码:

public class Animal {
    private String name;
        public Animal(String name) {
            this.name = name;
         } //end of constructor

        public String getName(int i) {
            return this.name[i];
         } //end of getName

        public void setName(String name[]) {
            this.name = new String[] {"Tom", "Jerry"};
        } //end of setName

} //end of class Animal

我在 NetBeans 中工作,它突出显示了两条错误消息: - 在 get 方法下:“需要一个数组,但找到了字符串” - 在set方法下:“不兼容的类型:String[]不能转换为String”

有人可以解释一下错误是什么吗?似乎很简单,但从我的脑海中溜走。

非常感谢

【问题讨论】:

  • 代码中的任何地方都没有数组,但出于某种原因你认为有。 StringString[] 是两个完全不同的对象。
  • String name。仔细看看这个。然后是this.name[i];,然后是this.name = new String[] {"Tom", "Jerry"};
  • 我不喜欢语法String name[] 而不是String[] name 的原因是它会引起混淆。也许这就是问题所在。
  • 看看this

标签: java arrays class methods


【解决方案1】:

您已将变量声明为字符串:

private String name;

然后你用一个字符串初始化它:

public Animal(String name) {
    this.name = name;
} //end of constructor

稍后您尝试将一个字符串数组放入其中:

this.name = new String[] {"Tom", "Jerry"};

并且您尝试将其作为字符串数组进行访问:

return this.name[i];

字符串数组与字符串不同。正确声明变量,程序会运行得更好。

private String[] name;

你需要用一个数组来初始化它。

public Animal(String initialName) {
    this.name = new String[1];
    this.name[0] = initialName;
} //end of constructor

此外,不要对用于数据成员的参数使用相同的标识符。太混乱了。

【讨论】:

  • 如果他将它声明为一个数组,那么他的构造函数就没有意义了。我不认为这个问题是印刷错误,而是对数组的理解。
  • 你为什么坚持要把name改成数组?有一个字符串数组作为动物的名字有什么意义?你认为 OP 想要支持昵称吗?不太可能。
  • 我认为他们正在练习学习字符串数组的工作原理。最后一种方法显示两个名字:Tom 和 Jerry。获取名称有一个索引参数。我认为这门课已经从一个名字的动物变成了一个有多个名字的动物。同意,您可能更喜欢拥有一组动物,每个动物都有一个名字,但问题不在于这个。
  • “不要对用于数据成员的参数使用相同的标识符” - 我不同意。 this 关键字不会造成混淆 - 它会阻止您创建大量标识符(这实际上可能会导致混淆)。
  • 感谢@AgilePro!想我明白了!构造函数中的字符串数组是不必要的。你的最后一段代码对我来说非常有意义。所以,我重新编写了它:'public class Animal {''private String name;' 'public String getName() {' 'return this.name;' '}' 'public void setName(inti) {' 'String[] myNames = new String[] {"Tom", "Jerry"};' 'this.name = myNames[I];' '}' 'public static void main(String[] args) {' 'Animal cat1 = new Animal();' 'cat1.setName(0);' 'System.out.println(cat1.getName());' '}' 输出:汤姆
猜你喜欢
  • 2012-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2015-07-11
  • 2014-11-20
相关资源
最近更新 更多