【发布时间】:2016-07-17 10:11:18
【问题描述】:
我有一个有理数类,其构造函数的默认值为 0/1,如下所示:
public Rational (){ this(0, 1);}
public Rational (int numerator, int denominator){
this.numerator = numerator;
if (denominator== 0)
throw new IllegalArgumentException("Denominator can't be zero.");
this.denominator = denominator;
}
现在,在一个子类中,我想创建一个 Rationals 数组。它们都设置为“null”。所以我在 Rational 类中有两个方法将所有值设置为零。我有一个用于简单数组,另一个用于矩阵:
public Rational[] zero(Rational[] array){
for (int i=0; i<array.length; i++)
array[i] = new Rational();
return array;
}
public Rational[][] zero (Rational[][] matrix){
for (int i=0; i<matrix.length; i++)
for(int j=0; j<matrix[i].length; j++)
matrix[i][j] = new Rational();
return matrix;
}
首先,使用改进的循环会更好吗?比如:
public Racional[][] zero(Racional[][] matrix){
for (Racional[] arr : matrix)
for (Racional rat : arr)
rat = new Rational();
return matrix;
}
其次,有没有一种方法可以创建数组或矩阵,而无需像使用原始类型那样手动将所有位置归零。
例如:
int[] arr = new int [10]; //All zero
Rational[] arr = new Rational [10]; //All null
arr = arr.zero (arr); //All "default" - 0/1
【问题讨论】:
-
抱歉,据我所知,Java 并没有这样做。
-
对于原始类型,可以使用
Arrays.fill。 -
@callyalater
Arrays.fill()也适用于对象,但仅当Rational不可变时才适用于此。
标签: java arrays default-value