【问题标题】:passing array as argument in java在java中将数组作为参数传递
【发布时间】:2015-05-28 06:58:48
【问题描述】:

我想将数组作为参数从 main 传递给子类。但看起来它没有初始化。请在下面查看并建议我错了。 提前致谢

    class arraymain{
    public static void main(String[] arg){

        Array obj=new Array();
        obj.passArray(new int[]{1,2,3,4,5},4);
    }
    }
 class Array{
 void passArray(int[] values,int size){

   values=new int[size];
        for (int num=0;num<values.length;num++){
            System.out.println(values[num]);

        }
    }

}
OUPTPUT:
0
0
0
0

【问题讨论】:

  • 不是因为values=new int[size];这行吗?您正在覆盖正在传递的任何内容。
  • 也没有理由传递size 参数。
  • 你不应该给参数变量赋值,除非你确切地知道你在做什么。
  • 关于代码质量的旁注:我了解您才刚刚开始,但请花一些时间阅读基本的 Java 概念;例如如何命名类、方法……(参见此处例如:stackoverflow.com/questions/1334204/…
  • 好的先生,我会读的。;)

标签: java arrays arguments


【解决方案1】:
values=new int[size];

您正在初始化一个新数组,覆盖传递的参数。

以这种方式创建新数组时,所有值都使用其默认值进行初始化,int 这恰好是 0。

只需删除此行,代码即可按预期工作。

而且,正如评论所指出的,这使得参数size 未被使用。数组的 length 直接从数组派生而来,正如您在代码中所做的那样。

【讨论】:

    【解决方案2】:

    您需要从 Array 类中删除 values=new int[size];

    你得到values作为参数,然后你正在做这个values=new int[size];,它创建了一个新数组,这个新数组没有值(默认值0)。

    【讨论】:

    • 是的,行得通。但我想在子类中设置数组的大小。你能解释一下我该怎么做吗
    • "No values" 不太正确。它有其默认值,即零。
    • 是的,它的好伙伴。但在我的作业中,我需要将数组大小作为参数传递。
    • @PreetSingh,你已经有了尺寸,为什么还要重新设置尺寸?
    • @PreetSingh 我的评论不是给你的,而是给 Soumitri 的,是关于他的回答中的一个声明。 :)
    【解决方案3】:

    问题是线

    values=new int[size]
    

    您正在创建一个 new 数组,因此您隐藏了具有非 0 值的数组。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 2014-03-25
      • 2013-05-23
      • 2014-05-04
      • 2012-07-05
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多