Alex Fox
Alex Fox

Reputation: 23

Issues with Returning Array

So I was tasked with asking the user to input 10 numbers into an array and then printing the numbers in order and reverse order using a tester class and not just the main.

I'm having problems with how to return the array that has been passed. Here's my code so far:

public class PrintIt
{
   static int[] numbers = new int[10];
   static int i = 0;

   public static int PrintOrder()
   {
       System.out.println("\nList of numbers in order: \n");
       for (int i = 0; i < numbers.length; i++)
       {
           System.out.println(numbers[i]);
       }

       return ;
   }

   public static int PrintReverse()
   {
       System.out.println("\nList of numbers in reverse order: \n");
       for (int i = numbers.length - 1; i >= 0; i--) 
       {
           System.out.println(numbers[i]);
       }

       return ;
   }
}

and the tester class:

import java.util.Scanner;
public class PrintItTester
{
   public static void main (String [] args)
   {
      Scanner input = new Scanner(System.in);

      int i = 0;
      int[] numbers = new int[10];

      System.out.println("\nPlease input " + 10 + " numbers.");

      for (i=0; i < numbers.length; i++)
      {
          PrintIt.numbers[i] = input.nextInt();    
      }

      System.out.print(PrintIt.PrintOrder());
      System.out.print(PrintIt.PrintReverse());
   }
}

When I run the code with numbers[i] in the return it reads i as being 0 and only outputs the first element in the array. I've looked for a long time and I can't figure this out.

I know, obviously, that there needs to be something returned, but whatever I put doesn't work. For example, when I try to return the array, numbers[i], it only returns the first element because the variable has a value of 0.

Upvotes: 2

Views: 58

Answers (1)

Sergey Kalinichenko
Sergey Kalinichenko

Reputation: 726539

You have several problems in your code:

  • The declaration int[] numbers = new int[10]; in the main is useless. Remove it, and replace numbers.length with PrintIt.numbers.length
  • Your methods return ints, not arrays. Make them void, and call them without System.out.print.
  • Remove the unnecessary return statements from the PrintOrder and PrintReverse methods.

This should fix the problem (demo).

Upvotes: 1

Related Questions