【问题标题】:Set and get methods in javajava中的set和get方法
【发布时间】:2012-11-07 02:59:29
【问题描述】:
public class Examples
{
    private int numbers[]; //instance variable
    public Examples()
    {
        numbers = new int[10];
        for (int i = 0; i < numbers.length; i++) 
        {                           //constructor number 1
           numbers[i] = 42;
        }
     } 

     public Examples(int[] array)
     {
        numbers = new int[array.length];
        for (int i = 0; i < array.length; i++) 
        {
           numbers[i] = array[i];         //constructor number 2
        }
      }
}

所以我必须编写一个 set 方法,该方法将为实例变量创建一个与传递给 setNumbers 的数组长度相同的新数组,然后复制其参数的值..

到目前为止,我有

public void setNumbers (int numbers)
    {
        int[] setNumbers = int numbers;
    } 

我从中得到错误,不知道为什么

【问题讨论】:

  • public void setNumbers (int numbers) { int[] setNumbers = int numbers; }
  • 您应该在您的 setNumbers 方法中发布您迄今为止尝试过的内容,并说明您遇到了什么障碍。
  • 你做了什么来尝试自己解决这个问题?
  • 发布测试代码(通常在您的 main 方法中)以及错误!
  • 好吧,我重新编辑了它:) 至于我收到的错误消息,它说 int numbers 应该有 '.class' 我认为这是不正确的..

标签: java methods get set jgrasp


【解决方案1】:

我不知道您的 setter 方法签名应该是什么,但正确的方法可能是以下之一:

public void setNumbers (int []numbers) {
    this.numbers = numbers;
    // or perhaps you need to copy the argument:
    // this.numbers = Arrays.copyOf(numbers, numbers.length);
}

否则:

public void setNumbers (int numbers) {
    this.numbers = new int[numbers];
}

另外,我会这样写你的构造函数:

public Examples()
{
    numbers = new int[10];
    Arrays.fill(numbers, 42);
 } 

 public Examples(int[] array)
 {
    numbers = Arrays.copyOf(array, array.length);
  }

【讨论】:

  • @user1804737 - 如果您还没有这样做,请不要忘记导入 java.util.Arrays
  • 我认为他可能想在setNumbers 方法中将参数数组复制到numbers,而不是仅仅分配它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多