Arrays retourneren in Java

Ik heb absoluut geen idee waarom deze code geen array retourneert… Ik heb het gevoel dat er een probleem is met mijn compiler:

public class trial1{
    public static void main(String[] args){
        numbers();
    }
    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}

De code geeft helemaal niets terug. Het maakt me gek!


Antwoord 1, autoriteit 100%

Het retourneert de array, maar alles wat iets retourneert (inclusief een array) doet precies hoe het klinkt: retourneert de waarde. In jouw geval krijg je de waarde van numbers(), wat toevallig een array is (het kan van alles zijn en je zou nog steeds dit probleem hebben), en laat het daar gewoon zitten.

Als een functie iets retourneert, vervangt het in feite de regel waarin het wordt aangeroepen (in jouw geval: numbers();) door de geretourneerde waarde. Dus wat uw main methode werkelijk uitvoert, is in wezen het volgende:

public static void main(String[] args) {
    {1,2,3};
}

Wat natuurlijk niets lijkt te doen. Als je iets met de retourwaarde wilt doen, kun je zoiets als dit doen:

public static void main(String[] args){
    int[] result = numbers();
    for (int i=0; i<result.length; i++) {
        System.out.print(result[i]+" ");
    }
}

Antwoord 2, autoriteit 38%

Natuurlijk retourneert de methode numbers() een array, alleen doe je er niets mee. Probeer dit in main():

int[] array = numbers();                    // obtain the array
System.out.println(Arrays.toString(array)); // now print it

Dat zal de array in de console tonen.


Antwoord 3, autoriteit 22%

Je hebt een aantal fundamentele misvattingen over Java:

Ik wil dat het de array retourneert zonder de console expliciet te vertellen om af te drukken.

1) Java werkt niet op die manier. Niets wordt ooit impliciet afgedrukt. (Java ondersteunt geen interactieve interpreter met een “repl”-lus … zoals Python, Ruby, enz.)

2) De “main” “retourneert” niets. De handtekening van de methode is:

  public static void main(String[] args)

en de void betekent “er wordt geen waarde geretourneerd”. (En sorry, nee, je kunt de void niet vervangen door iets anders. Als je dat wel doet, zal de opdracht java de “main”-methode niet herkennen.)

3) Als u (hypothetisch) wilt dat uw “hoofd”-methode iets retourneert, en u hebt de declaratie gewijzigd om dat toe te staan, dan zou u nog steeds een return instructie om te vertellen welke waarde moet worden geretourneerd. In tegenstelling tot sommige talen, behandelt Java de waarde van de laatste instructie van een methode niet als de retourwaarde voor de methode. Je moet een return statement gebruiken …


Antwoord 4, autoriteit 19%

Zoals Luiggi al zei, moet je je hoofdmenu veranderen in:

import java.util.Arrays;
public class trial1{
    public static void main(String[] args){
        int[] A = numbers();
        System.out.println(Arrays.toString(A)); //Might require import of util.Arrays
    }
    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}

Antwoord 5, autoriteit 3%

Als je de methode numbers wilt gebruiken, heb je een int-array nodig om de geretourneerde waarde op te slaan.

public static void main(String[] args){
    int[] someNumbers = numbers();
    //do whatever you want with them...
    System.out.println(Arrays.toString(someNumbers));
}

Antwoord 6, autoriteit 3%

Je moet iets doen met de retourwaarde…

import java.util.Arrays;
public class trial1{
    public static void main(String[] args){
        int[] B = numbers();
        System.out.println(Arrays.toString(B));
    }
    public static int[] numbers(){
        int[] A = {1,2,3};
        return A;
    }
}

LEAVE A REPLY

Please enter your comment!
Please enter your name here

ten + 5 =

Other episodes