Ich habe eine rationale Zahl Klasse mit einem construtor mit einem Standardwert von 0/1 wie folgt aufgerufen:Java-Array einer Klasse mit Standardwert
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;
}
nun in einer Unterklasse, ich will eine erstellen Array von Rationen. Sie kommen alle auf "null". Also habe ich zwei Methoden innerhalb der Rational-Klasse, die alle Werte auf Null setzen. Ich habe eins für ein einfaches Array und ein anderes für eine Matrix:
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;
}
Erstens, wäre es besser, verbesserte Schleifen zu verwenden? Etwas wie:
public Racional[][] zero(Racional[][] matrix){
for (Racional[] arr : matrix)
for (Racional rat : arr)
rat = new Rational();
return matrix;
}
Zweitens ist es eine Möglichkeit, ein Array oder eine Matrix, ohne manuell zu erstellen, um alle Positionen Null, wie wir mit primitiven Typen tun können.
zB:
int[] arr = new int [10]; //All zero
Rational[] arr = new Rational [10]; //All null
arr = arr.zero (arr); //All "default" - 0/1
Tut mir leid, aber Java tut das nicht, soweit ich weiß. – callyalater
Für primitive Typen können Sie 'Arrays.fill' verwenden. – callyalater
@callyalater 'Arrays.fill()' funktioniert auch für Objekte, aber es ist nur anwendbar, wenn 'Rational' unveränderlich ist. –