2011-05-23 96 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环是如何构建的结束。