2017-04-03 300 views
-2

这里互换是我的代码: 如何获取数组的最后一个值在循环

class test { 
    public static void main(String args[]) { 
    int a[]={5,8,9,7,3}; 
    int j; 

    for(j=0;j<a.length-1;j++) 
    { 
     if(a[j]>a[j+1]) 
     { 
      int temp=a[j]; 
      a[j]=a[j+1]; 
      a[j+1]=temp; 
     } 
     System.out.print(a[j]+" "); // last value of array a[4] is not printed 
    } 
    } 
} 

这是我的计划的一部分,不打印

数组这里最后的值?

你能帮助我的人如何获得数组的最后一个值吗?

+0

最后的值不打印,因为你的for循环只能进入则为a.length - 2,和你的最后的值是在a.length - 1 – dpassy

+0

并提示:阅读关于Java编码风格约定。类名起始于UpperCase;总是。即使为了学习的目的,一个像“a”这样的名字绝对没有说。称之为“testArray”或类似的东西。 – GhostCat

+0

TNQ ......但没有任何其他的逻辑通过使用任何其他循环打印所有阵列交换价值? –

回答

1

简单:在之后添加另一个打印语句循环;如:

System.out.println(a[a.length-1]); 

例如。例如

。重点是你的循环是(正确跳过最后一个索引)。所以一个合理的解决方案是在之后做最后的印刷声明;因为你知道你想要打印它。

+0

你correct..is有任何其他的逻辑与循环概念的帮助下只 –

2

...不打印阵列的这里最后价值... ...

是不是因为你这样做是印刷:

for(j=0;j<a.length-1;j++) 

只打印最后一个元素就足够了:

System.out.println(a[a.length - 1]); 
1

未打印的原因是因为您的for环路范围从0(含)至a.lenth-1(不包括)。因此,循环为而不是为最后一个元素执行。

但是,您可以不能简单地设置一个必然更高,因为那么交换将崩溃(产生出界例外)。

您可以通过简单的打印的最后一个元素后循环解决的问题:

class test 
{ 

    public static void main(String args[]) 
    { 
     int a[]={5,8,9,7,3}; 
     int j; 

     for(j=0;j<a.length-1;j++) 
     { 
      if(a[j]>a[j+1]) 
      { 
       int temp=a[j]; 
       a[j]=a[j+1]; 
       a[j+1]=temp; 
      } 
      System.out.print(a[j]+" "); // last value of array a[4] is not printed 
     } 
     if(a.length > 0) { System.out.print(a[a.length-1]); } 
    } 

}
+0

TNQ ...是否有任何其他的逻辑通过使用任何其他循环打印所有阵列交换价值? –

相关问题