2014-02-27 82 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]); 
}