2014-11-21 99 views
2

所以我的任务是要求用户输入10个数字到一个数组中,然后使用测试程序类而不是主要的顺序打印数字和颠倒顺序。我有问题如何返回已传递的数组。这里是我到目前为止的代码:返回数组的问题

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 ; 
    } 
} 

和测试类:

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()); 
    } 
} 

当我运行与数字代码[I]在返回它读取我为0,只输出的第一要素在数组中。我看了很久,我无法弄清楚这一点。

很明显,我知道需要返回一些东西,但是我放的任何东西都不起作用。例如,当我试图返回数组,数字[I],它只返回的第一个元素,因为变量具有0

回答

1

值你在你的代码的几个问题:

  • 的在main中的声明int[] numbers = new int[10];是无用的。删除它,并将numbers.length替换为PrintIt.numbers.length
  • 您的方法返回int s,而不是数组。使它们成为void,然后在没有System.out.print的情况下打电话给他们。
  • 删除PrintOrderPrintReverse方法中不必要的return陈述。

这应该解决问题(demo)。

+0

这样做。 我不确定我是否需要在主体中定义数字[],所以我确保它是安全的。出于这个原因,我也保留了主要的numbers.length。 我有一种感觉,我需要通过使用void来摆脱返回,但无法设法将2和2放在一起。 – 2014-11-21 14:59:32