2014-01-21 43 views
2

我正在写一个程序来创建for循环以相反的顺序打印整数数组。for循环打印整数数组反向

public class RevIntArray { 
    public static void main(String[] args) { 
     int var[]=new int[3]; 
     int i; 
     for(i = -3; i > -3; i++) { 
      System.out.println(i); 
     } 
    } 
} 

我没有收到任何结果。有人可以提供一个简单的解决方案吗?

+2

因为在第一次迭代'i'不是'> -3'循环立即停止。作为一个方面说明,你没有做任何与该阵列... –

+0

-3> -3?!没有!!所以我> -3不会是真的,它不会进入你的循环 – Hrishikesh

+4

请不要downvote这。 OP至少表现出了一些努力。 – asgs

回答

5

数组没有负指数的概念,如果您想从最后一个移动到第一个,那么您必须从最后一个索引开始移动到第一个。

for(i =3; i>0; i--){ 

    System.out.println(var[i - 1]); 

} 
+0

我试着添加它..但我得到0 0 0作为输出。 – user3220565

+1

@ user3220565您从未将任何值放入您的数组中。 Int数组值默认为0. – csmckelvey

+0

@ user3220565您可以随时查看我的答案。 ;) – bblincoe

2

您开始时在数组中不存在否定索引。使用array.length代替显式数字也是一种很好的做法,以便稍后更改数组的大小。

public class RevIntArray { 
    public static void main(String[] args) { 
     int var[] = new int[] {1,2,3}; 
     for(int i = var.length - 1; i >= 0 ; i--) { 
      System.out.println(var[i]); 
     } 
    } 
} 
+0

评论为downvote也许? – csmckelvey

+0

我没有downvote,但数组没有实际看到它被颠倒的值。 – bblincoe

+0

不是downvoter,但没有太多评论,尽管您可以将'.length'移出循环。 – asgs

2

一对夫妇的提示让你去:

for(i =-3; i>-3; i++){  
    System.out.println(i);  
} 
  • 值在var,为int,将是所有零(由于int基本类型的默认初始化)。为阵列提供一些值,以便可以有效检查您是否在反向打印它(例如var[2] = 1)。否则,请用{0,0,1}将其明确)。
  • 你的迭代是错误的。如果大小是三,不要从-3开始。即使你有循环工作,负数索引对数组无效。
  • 条件不符合开始,因此您的for是毫无意义的。
  • 想想你想做什么:迭代“相反方向”意味着从结尾开始,并且回到开头。您想从最后一个元素开始,然后回到索引0
  • 一旦你完成循环,打印i将显示索引,而不是元素。您需要为该索引存储var中的值。
  • i--会减少你的计数器。
  • var.length会告诉你数组的大小。记住索引从零开始,因此length - 1是最后一个元素的索引。
  • 获取存储在某个阵列某个位置的值做array[index]

考虑到这一点,请再试一次。

2

首先,你应该提供一些价值你的数组:

int[] var = { 1, 2, 3 };

然后,你应该初始化循环计数器。你可以在循环结构中做到这一点。现在的循环:

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

这应该打印到控制台。