[英]Trouble performing a deep copy of array
需要一些關於簡介Java類中的項目的建議。 我堅持創建一個賦值構造函數,它將數組作為輸入並完成深度復制。 有問題的構造函數位於第二個代碼塊中。
import java.util.Scanner;
public class NumberList
{
public static final int MAX_CAPACITY = 100;
private double [] numbers;
private int length;
public NumberList()
{
numbers = new double[MAX_CAPACITY];
int i;
for(i = 0; i < MAX_CAPACITY; i++)
numbers[i] = 0;
length = 10;
}
此行之前的所有內容都會編譯。 下面的構造函數是完成從數組參數到數字數組的深層復制。
NumberList(final double a[])
{
double a[] = new double[MAX_CAPACITY];
numbers = a[];
}
收到以下錯誤:
NumberList.java:67: error: '.class' expected
numbers = a[];
對於我的生活,我無法弄清楚如何解決這個問題。 我也嘗試過“for”循環。
只需運行a
並將其元素復制到numbers
:
public NumberList(final double[] a) {
this.numbers = new double[a.length];
for (int i = 0; i < a.length; ++i) {
this.numbers[i] = a[i];
}
}
NumberList(final double a[])
{
double a[] = new double[MAX_CAPACITY];
numbers = a[];
}
第一行是試圖重新聲明參數a
; 你不能這樣做。
第二行使用了無效的語法:除了數組變量的聲明或這些變量的初始化之外,你永遠不會使用[]
。
復制a
的最簡單方法是寫:
numbers = Arrays.copyOf(a, a.length);
但是你可以像Mureinik給你的那樣用循環來寫這個。
請注意,您應該編寫double[] a
,而不是double a[]
。 兩者在語義上是相同的,但前者是首選,因為[]
是類型的一部分,而不是變量名稱。
double a[]
式被用於Java “作為對C和C ++傳統的點頭” 。 你可以在這里閱讀更多。
你可以簡單地使用:
NumberList(final double[] a) {
numbers = Arrays.copyOf(a, a.length);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.