2011-05-23 95 views
1

我想分割數組的第一個元素的數組元素,該方法工作正常,但最後一個元素沒有被分割。java按元素劃分數組

我想我不得不使用< = array.length ...,但它顯然給了我一個數組越界的異常。我怎樣才能達到這個沒有< =長度。 PS:第一個因素不應該被忽略/考慮,因爲它是股息。我的代碼如下:

public class Ris 
{ 
    public static void main() 
    { 
     double[] testResult = {2.0, 3.6, 5.0, 2.0}; 
     for(int element = 0; element < testResult.length; element++){ 
      if(testResult[element] > testResult[0]){//excludes 1st element 
       testResult[element] = testResult[element]/testResult[0] ;// divides elements by first element 0 
      } 
      System.out.println(testResult[element]); 

     } 
    } 
} 

回答

2

你skiping第一elemnt在一個糟糕的方式 - 你可能彪測試更多然後2.0

-

if(testResult[element] > testResult[0]){ 

跳過一切,是不是比第一要素更多對於

if(element > 0){ 

但是,您也可以跳過第一個元素定義循環

for(int element = 1; element < testResult.length; element++){ 
1
if(testResult[element] > testResult[0]){//excludes 1st element 

您正在測試的值,在這裏沒有位置。試試這個:

public class Ris 
{ 
public static void main() 
{ 
    double[] testResult = {2.0, 3.6, 5.0, 2.0}; 
    for(int element = 1; element < testResult.length; element++){ 
    testResult[element] = testResult[element]/testResult[0] ;// divides elements by first element 0 
     System.out.println(testResult[element]); 

    } 
} 
} 
0

要排除第一個元素,你應該從1開始計數,而不是0。改變

for (int element = 1; .... 
1

相反的:

if(testResult[element] > testResult[0]){//excludes 1st element 

您應該使用:

if(element > 0){//excludes 1st element 

排除第1個要素。

或者讓你在第一的位置循環開始(跳過第0位):

for(int element = 1; element < testResult.length; element++) 
0

在更一般的筆記,這是不好的做法,但在一個陣列 或使用相同的變量所有的變量用於輸入和輸出。 你還是有:

double denominator = 2.0; 
double[] inputValues = new double[]{3.6, 5.0, 2.0}; 
double[] outputValues = new double[inputValues.length]; 

如果你這樣做,相反,for循環現在開始於元素0之前(<inputValues.length,這通常是for環是如何構建的結束。