数组元素始终是使用点运算符的自定义类中的最后一个元素

时间:2018-09-08 15:50:16

标签: java arrays

在我将数组作为自定义类中的函数ElePrint内部的参数传递给我之后,当我使用自定义类的点运算符打印数组的最后一个元素时,数组的元素始终会打印数组的最后一个元素。

<label class="btn file-upload-btn">
 <div class="form-group file required event_photo upload-field">
  <div class="fileinput fileinput-new input-group" data-provides="fileinput">
   Add a photo
   <div class="form-control uneditable-input input-name" data-trigger="fileinput">
    <i class="fa fa-file fileinput-exists"></i>
    <span class="fileinput-filename"></span>
   </div>
   <div class="input-group-btn"  style="display: none;">
    <input class="file required file-upload" type="file" name="event[photo]" id="event_photo">
   </div>
  </div>
 </div>
 <span style="display:none;">
  <%= f.input :photo_cache, as: :hidden %>
 </span>
</label>

输出为:

class ele {
    static int count, index, val;
    ele element[] = new ele[50];

    void ElePrint(int arr[], int n) {
        //Assign array values to the structure
        for (int i = 0; i < n; i++) {
            element[i].val = arr[i];
        }
        for (int t = 0; t < n; t++) {
            System.out.print(" " + element[t].val);
        }
    }
}

class Hello {
    public static void main(String args[]) {
        ele el = new ele();
        int arr[] = {1, 2, 3, 4, 5, 6};
        int n = 6;
        el.ElePrint(arr, n);
    }
}

但是,我想要的是确切的数组

6 6 6 6 6 6

2 个答案:

答案 0 :(得分:0)

  1. 由于val是静态的,因此它在类中是唯一的,ele类的每个元素都访问同一对象。

    因此,每个element[i].val仅访问ele.val,您需要删除static,它将成为每个实例的属性

  2. 此外,您创建了ele对象的数组,但没有创建对象本身,您需要

    element[i] = new ele();
    element[i].val = arr[i];
    

Java命名约定

  • 在UpperCamelCase中为类命名,并使用有效的名称
  • 在lowerCamelCase中命名方法

答案 1 :(得分:0)

在这里,您将static关键字与类属性一起使用。 static关键字基本上意味着此变量是类的一部分,而不是实例/对象。这意味着只要此类的任何对象修改了val属性的值,它也会自动为其他对象更新。因此,当您尝试访问val属性的值时,会得到最新的值6

请考虑从static类的属性声明中删除ele关键字。