Поскольку вы возвращаете тот же тип, который пытаетесь присвоить переменной, нет необходимости создавать новый массив.Этот код должен работать:
public static void main(String[] args) {
int n = 5;
// throws out the error
String[] printHi = arrayOfHiNTimes(n);
System.out.println(printHi);
}
private static String[] arrayOfHiNTimes(int n) {
String[] hiArray = new String[n];
for(int i = 0; i < n; i++) {
hiArray[i] = "hi";
}
return hiArray;
}
Если вам необходимо скопировать массив, используйте Arrays.copyOfRange (arr, start, end) , ниже
public static void main(String[] args) {
int n = 5;
// throws out the error
/*args are the original array, the starting index (0 for beginning),
*and the last index + 1 since it's exclusive, which is the same as arr.length.
*In this case, it's the same as n since that's what you're using to determine
*the length of the array.
*/
String[] printHi = Arrays.copyOfRange(arrayOfHiNTimes(n), 0, n);
System.out.println(printHi);
}
private static String[] arrayOfHiNTimes(int n) {
String[] hiArray = new String[n];
for(int i = 0; i < n; i++) {
hiArray[i] = "hi";
}
return hiArray;
}