2011-12-07 6 views
0

私はユーザーから10の値を得ました。これを配列に入れてメソッドに呼び出し、グローバル変数を使用せずに最初の配列の整数を逆にする配列を含む別のメソッドを呼び出します。例えば、ユーザーは私に1,2,3などの値を与え、最初の配列に格納し、次に2番目の配列に出力します。3,2,1を出力します。別の配列を使用して1つの配列の整数を逆にするにはどうすればよいですか?

私はユーザーから整数を取得するコードの一部を持っていますが、グローバル変数を使用せずに配列を逆にする方法はわかりません。 values[i]の2番目のメソッドに到達するとコードは実行されません。ここで

は、私がこれまで持っているものです。

public static void main(String[] args) { 

    getInput(); 
    reverseInput(); 
    System.exit(0); 
} 

public static void getInput() { 

    Scanner keyboard = new Scanner(System.in); 

    int[] values; 
    values = new int[10]; 

    //Ask the user to enter 10 integers 
    System.out.println("Please enter ten numbers."); 
    for (int i = 0; i<values.length; i++) {//for loop to display the values entered 
     values[i] = keyboard.nextInt(); 
     System.out.println("Value" + (i +1) + " is " + values[i]); 
    } 
} 

public static void reverseInput() { 

    System.out.println("Now we are going to reverse the numbers."); 
    Scanner keyboard = new Scanner(System.in); 

    int [] values; 
    values = new int[10]; 

    for (int i = (values.length -1); i>= 0; i--) {//for loop to display integers in reversed order 
     values[i]; 
     System.out.println(values[i]); 
    } 
} 

答えて

1

ちょうど逆

にループのための別の操作を行い、その後、「for」ループの後、10の番号を取得するための基礎として「か、getInput」を使用します
public static void reverseInput() 
    { 

    Scanner keyboard = new Scanner(System.in); 

    int[] values; 
    values = new int[10]; 

    //Ask the user to enter 10 integers 
    System.out.println("Please enter ten numbers, we are going to reverse the numbers"); 
    for (int i = 0; i<values.length; i++) //for loop to display the values entered 
    { 
     values[i] = keyboard.nextInt(); 
    }; 
    int[] revValues; 
    revValues = new int[10]; 
    for (int i = (values.length -1); i>= 0; i--) //for loop to display integers in reversed order 
    { 
     revValues[ revValues.length -1 -i ] = values[ i ]; 
     System.out.println(revValues[ i ]); 
    } 
} 
あなたが Commons Langから ArrayUtils.reverseを使用することができます
+0

しかし、私は2つの別々の配列をしなければなりません、2番目の配列は最初の値を使用しています。 – rahme24

+0

OK、 "revValues"配列に "values"配列の値を逆に書き込む答えを更新しました。 – ComputerSaysNo

2

ArrayUtils.reverse(values); 
+1

私はそのアイデアは彼自身の逆関数を書くことになっていると思います。 – QuantumMechanic

+0

はい私は、最初の配列の入力を逆にする配列を書き込むことになっています。 – rahme24

+2

ああ!ごめんなさい!あなたが学ぶためにそれをやっているのであれば、最初に紙の中で段階的に行うことをお勧めします。そしてあなたはそれをコードしようとします。 – elias

3

まず、場合グローバル変数を使用しない場合は、get inputメソッドからreverseInputメソッドに配列を渡す必要があります。このような何か:

int[] values = getInput(); 
reverseInput(values); 

次に出力へのあなたのreverseInput方法の配列、それはこのようになりなければならないでしょう:

public static void reverseInput(int[] values) { 
     for(int i = (values.length - 1); i >= 0; i--){ 
      System.out.println(values[i]); 
     } 
    } 
+0

さて、それは理にかなっていますが、私の質問は今どこにあるのですか?それは私がreverseInputメソッドでそれをしたときにコンパイルされないので、私はおそらくmainメソッドでそれを行うでしょうか? – rahme24

+0

"values [i];"がある行を削除する必要があります。 – Michaeldcooney

+0

私はそれを削除しました。それが配列を渡す場所ですか? – rahme24

1

[OK]を、あなたはどのように表示要素の参照順に理解します。あなたが書いたように:

for (int i = (values.length - 1); i >= 0; i--) { 
    System.out.println(values[i]); 
} 

を、どのようにあなたはvalues[4]reversedValues[0]に入れ、その上にアップされたような(reversedValuesそれを呼び出す)、別の配列に(それは5つの要素を持っていると言う)valuesの要素を入れてしまう、という与えられましたreversedValues[4]values[0]を入れていますか?

関連する問題