2017-10-29 73 views
1

我想反轉用戶輸入的10個不同的數字。例如,如果用戶輸入'34 82 49 102 7 94 23 11 50 31',結果應該是'31 50 11 23 94 7 102 49 82 34'。但是我一直得到0 0 0 0 0 0 0 0 0 0的結果,我甚至沒有從掃描儀獲得輸入框。添加了更多細節的圖像。Java數組反轉不起作用

import java.util.*; 
public class ReverseNumbersFor 
{ 
    public static void main(String[] args) 
    { 
    int [] reverseNumbersWhile = new int [10]; 
    printReverse(reverseNumbersWhile); 
    } 

    public void reverseNumbersWhile(int num[]) 
    { 
    System.out.println("Enter 10 numbers : "); 
    Scanner in = new Scanner(System.in); 
    int [] input = num; 

    for (int i = 0; i < input.length; i++) 
    { 
     input [i] = in.nextInt(); 
    } 
    System.out.println(input); 
    } 

    public static void printReverse(int [] value) 
    { 
    for (int i = value.length - 1; i >=0; i--) 
    { 
     System.out.print(value[i] + " "); 
    } 
    } 
} 

Code image with result

回答

1

如下

public static void main(String[] args) { 
    int[] number = new int [10]; 
    printReverse(reverseNumbersWhile(number)); 
} 
public static int[] reverseNumbersWhile(int[] input){ 
    System.out.println("Enter 10 numbers : "); 
    Scanner in = new Scanner(System.in); 
    for (int i = 0; i < input.length; i++){ 
     input[i] = in.nextInt(); 
    } 
    //System.out.println(input); 
    return input; 
} 

public static void printReverse(int[] value){ 
    for (int i = value.length - 1; i >=0; i--){ 
     System.out.print(value[i] + " "); 
} 
+0

感謝您的幫助,但我必須使用「公共無效reverseNumbersWhile(INT NUM)」的方法.... – NeedHelp

+0

@NeedHelp檢查我的編輯答案。唯一的問題是,如果你在主函數中使用數字。它將打印0,因爲您按照值傳遞方法傳遞給函數 –

+0

@NeedHelp您必須使用靜態方法。因爲你不能從靜態方法調用非靜態方法 –

0

你是不是調用reverseNumbersWhile方法。你正在初始化一個名爲reverseNumbersWhile的數組,然後將它傳遞給一個只打印其值的方法,它們的值都只被初始化爲零。

0

其他的答案已經指出什麼是你的代碼錯誤更改代碼。這是一個使用Java的逆轉8 IntStream的另一種方式 -

public static int[] reverse(int[] a) { 
    return IntStream.range(0, a.length).map(i -> a[a.length - 1 - i]).toArray(); 
}