Скопировать массив String из другого массива String, возвращаемого из вызова функции в Java - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь назначить массив String (printHi) из другого массива String, возвращаясь из вызова функции, в Java.Вот код для этого назначения.


public static void main(String[] args) {

int n = 5;
 // throws out the error        
String[] printHi = new String[] (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;
}

1 Ответ

1 голос
/ 23 сентября 2019

Поскольку вы возвращаете тот же тип, который пытаетесь присвоить переменной, нет необходимости создавать новый массив.Этот код должен работать:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...