2017-04-03 295 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 ...是否有任何其他的邏輯通過使用任何其他循環打印所有陣列交換價值? –

相關問題