【问题标题】:How to access parameters in a method for an array? Java如何访问数组方法中的参数?爪哇
【发布时间】:2016-01-21 05:40:51
【问题描述】:

只是想了解这应该如何工作的基础知识。这是我的代码。---------------> 这是我的主要课程。

public class Driver
{
    public static void main(String[] args)
    {
        //create new instance of the ArrayLab class with parameter of 10
        ArrayLab array = new ArrayLab(10);

        //search for 2
        array.search(2);
    }
}

ArrayLab 类有一个分配给它的方法,称为搜索,参数为 (2)。到目前为止,这就是我所拥有的。

import java.util.Arrays;
public class ArrayLab
{
    //array instance variable
    int[] array1 = new int[10];

    //array constructor
    public ArrayLab(int integer)
    {
        //class parameter = 10
        int[] array1 = new int[integer];

    }

//method
public void search(int integer)
    {
        int[] array1= new int[]{integer};
        System.out.println(Arrays.toString(array1));
    }
}

所以最大的问题是我做对了什么?还是错了?我意识到这可能是非常基本的,只是努力理解代码中发生的事情。谢谢:)

【问题讨论】:

  • 您是有错误还是只想知道发生了什么?
  • 刚刚编辑。当我尝试打印时,它不会返回我在搜索方法 (2) 中设置的参数。
  • "当我尝试打印时,它不会返回我在搜索方法中设置的参数",那是因为 search 有一个 void 返回类型,请阅读返回类型,否则你会永远坚持下去。
  • 忠告:为您的变量提供更具描述性的名称。强迫自己想出反映变量含义的名称将帮助您思考您想要实现的逻辑。例如,在public ArrayLab(int integer) 中,integer 最好命名为capacity,因为它决定了ArrayLab 可以容纳多少个元素。如果search实际上应该访问ArrayLab的指定索引处的元素,那么将其命名为get(int index)会更好。 search 建议你去搜索看看ArrayLab 是否包含它。

标签: java arrays variables methods parameters


【解决方案1】:

您的Driver 课程很好。

所以,让我们一次写一行

int[] array1 = new int[10];

好的,你创建了一个大小为 10 的公共 int 数组,更准确地说是 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

public ArrayLab(int integer)
{
    int[] array1 = new int[integer];
}

这称为构造函数。您传入integer,并创建了一个名为array1new 数组,该数组在此范围内是本地的,因此与之前的不同。这个array1 包含integer-许多零。

要使用和初始化之前的array1,请将您的代码更改为此处

int[] array1;
public ArrayLab(int integer)
{
    this.array1 = new int[integer];
}

接下来,

public void search(int integer)
    {
        int[] array1= new int[]{integer};
    }
}

这再次创建了一个新数组,但只有一个值。所以说integer 是2,然后[2]

【讨论】:

  • 这将定义数组[integer]的大小,他可能会混淆。最好把价值本身。
  • 我可能应该将参数名称更改为唯一的,以免混淆!
  • @YoungHobbit - 不确定你说的是哪一个
  • @YoungHobbit - 它没有定义大小。尺寸和以前一样放在方括号中。该行创建了一个大小为 1 的数组,唯一的元素是 integer 的值。我更新了答案以指定这一点。
  • 我也意识到我的实例变量只需要“int[] array1;”
【解决方案2】:

我不知道你的 ArrayLab 类的目的是什么,但这里有一些问题

  1. 在构造函数中,您正在初始化一个本地 array1 而不是您的实例变量。

  2. search 方法只是再次初始化本地 array1

【讨论】:

  • 嗯好的,所以应该是 int[] array1= {integer};
  • 这一切都取决于你想在你的搜索方法中做什么。
  • 好吧,很有趣,所以我最终正在努力将它构建成可以搜索 # 的数组并查看它是否与参数匹配的东西。
【解决方案3】:

好的,所以发生的事情是在您的类 Driver 中创建您的类 ArrayLab 的对象。您向此类发送一个构造函数,该构造函数创建一个局部变量array1。您的搜索类正在初始化另一个本地数组1,这就是我将为您的 ArrayLab 类做的事情

import java.util.Arrays;
public class ArrayLab
{
    int[] array1;

    //array constructor
    public ArrayLab(int integer)
    {
        this.array1 = new int[integer];

    }

//method
public void search(int integer)
    {
        System.out.println(array1[integer]);
    }
}

【讨论】:

  • 完美运行,甚至去掉了括号!更好:)
  • 到目前为止,所有答案都是很好的信息,很难选择! :P
  • 这不是搜索方法。它在integer 的位置访问array1,而不是返回integer 的索引或者array1 包含integer
  • 啊,我以为我们正在通过发送一个我们想要返回的索引来搜索数组,我的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-07
  • 2021-12-17
  • 2022-11-18
  • 2015-02-08
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
相关资源
最近更新 更多