2014-02-27 84 views
1

你好,我是新來的java,我試圖做這個任務,但我不能得到所需的輸出,這是相反的數字順序。任何人能幫助我什麼我失蹤?非常感謝! 我的代碼的輸出是這樣的:使用java數組的反向數字

多少浮點數你想輸入:5鍵入1 數:5,4類型在第2號:6在3號: 7,2鍵入4. 數:-5 Type在5號:2

以相反的順序考慮的數字:

分配

創建一個程序,詢問用戶他要提供多少個浮點數。在此之後,程序詢問數字,將它們存儲在一個數組中,並以相反的順序打印數組的內容。

程序被寫入名爲ReverseNumbers的類。 示例輸出

浮點數有多少你想輸入:5 鍵入1號:5,4 類型在第2號:6 類型在第3號:在7,2 類型4.數:-5 Type在5號:2

以相反的順序

鑑於號碼: 2.0 -5.0 7.2 6.0 5.4

我的代碼:

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

     double[] numbers; 

     System.out.print("How many floating point numbers do you want to type: "); 
     int size = reader.nextInt(); 
     numbers = new double[size]; 

     for (int i=0; i < numbers.length; i++) { 
      System.out.print("Type in "+(i+1)+". number:"); 
      numbers[i-1] = reader.nextDouble(); 

     } 

     System.out.println(); 
     System.out.println("Given numbers in reverse order:"); 

     for (int i=numbers.length-1; i <= 0; i--) { 

       System.out.println(numbers[i]); 
     } 
    } 
} 
+0

檢查'號[I-1]'將拋出一個'IndexOutOfBounds'例外。將它改爲'數字[i]'。 – Obicere

回答

3

第二個for循環條件是錯誤的。它應該是:

for (int i = numbers.length - 1; i >= 0; i--) 

因爲i <= 0如果numbers.length - 1大於0,因此您for循環將不會運行它的身體不會是真的。

在第一個for循環中,索引numbers是錯誤的。它應該是:

numbers[i] = reader.nextDouble(); 

這是因爲如果i = 0,然後numbers[i - 1]numbers[-1],這是一個無效的索引。

+0

謝謝我花了幾個小時試圖修復它。現在它正在工作。 – user3358884

+0

沒問題。如果它有用並且解決了您的問題,請隨時接受此答案:[接受答案的工作方式](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Christian

1

在第一個循環中,您使用的是i+1而不是i++,所以i的值永遠不會增加。所以,你的

numbers[i-1]成爲numbers[-1],這應該會引發錯誤。我很驚訝,現在你的程序甚至給你一個輸出!

試試這個

for (int i=0; i < numbers.length; i++) { 
     System.out.print("Type in "+(i+1)+". number:"); 
     //numbers[i-1] = reader.nextDouble(); 
     numbers[i] = reader.nextDouble(); 
    } 

和第二循環。您從後到前這樣i>=0代替i<=0

for (int i=numbers.length-1; i >= 0; i--) { 
      System.out.println(numbers[i]); 
    } 
0
int[] numbers; 
System.out.print("How many integer point numbers do you want to type: "); 
int size = reader.nextInt(); 
numbers = new int[size]; 

for (int i=0; i < size; i++) { 
    //System.out.print("Type in "+(i+1)+". number:"); 
    numbers[i] = reader.nextInt(); 
} 

System.out.println(); 
System.out.println("Given numbers in reverse order:"); 

for (int i=size-1; i >= 0; i--) { 
     System.out.print(numbers[i]); 
}