2014-11-21 125 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