在我将数组作为自定义类中的函数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
答案 0 :(得分:0)
由于val
是静态的,因此它在类中是唯一的,ele
类的每个元素都访问同一对象。
因此,每个element[i].val
仅访问ele.val
,您需要删除static
,它将成为每个实例的属性
此外,您创建了ele
对象的数组,但没有创建对象本身,您需要
element[i] = new ele();
element[i].val = arr[i];
Java命名约定
答案 1 :(得分:0)
在这里,您将static
关键字与类属性一起使用。 static
关键字基本上意味着此变量是类的一部分,而不是实例/对象。这意味着只要此类的任何对象修改了val
属性的值,它也会自动为其他对象更新。因此,当您尝试访问val
属性的值时,会得到最新的值6
。
请考虑从static
类的属性声明中删除ele
关键字。