2015-12-21 201 views
0

我第一次使用扫描仪进行用户输入,然后计算平均值。如何使用double类型的数组?

我不断收到错误“从double到int的有损转换”。

它适用于所有类型为integer的情况,但是在计算平均值时只会将其转换为整数,并且大多数情况下平均值不是整数。

import java.util.Scanner; 

public class CalculateMean { 

    public static void main(String[] args) { 

     Scanner enterValues = new Scanner(System.in); 
     System.out.println("Enter the number of values. "); 
     double n = enterValues.nextDouble(); 
     double[] set = new double[n]; 
     System.out.println("Enter values."); 

     for(double x=0; x<n; x++) { 
      set[x] = enterValues.nextDouble(); 
     } 

     double sum = 0; 

     for(double cnt=0; cnt < set.length; cnt++) { 
      sum += set[cnt]; 
     } 

     double mean = sum/n; 
     System.out.println("The average of the values is " + mean); 
    } 
} 

回答

3

即使数组元素类型是double,所述索引类型是int。所以你的n,xcnt应该是int,因为你正在使用它们来索引数组。

请参见下面的注释标记:

import java.util.Scanner; 

public class CalculateMean { 
    public static void main(String[] args) { 

     Scanner enterValues = new Scanner(System.in); 

     System.out.println("Enter the number of values. "); 

     int n = enterValues.nextInt();    // <== They won't give you 6.3 values, will they? 
     double[] set = new double[n]; 

     System.out.println("Enter values."); 

     for (int x = 0; x < n; x++) {    // <== 
      set[x] = enterValues.nextDouble(); 
     } 

     double sum = 0; 

     for (int cnt = 0; cnt < set.length; cnt++) { // <== 
      sum += set[cnt]; 
     } 

     double mean = sum/n; 

     System.out.println("The average of the values is " + mean); 
    } 
} 
1

要迭代loopsizearray的使用int不是双象:

int n = enterValues.nextInt();    
    double[] set = new double[n]; 
    ... 
for(int x=0; x<n; x++) 
.... 
for(int cnt=0; cnt < set.length; cnt++) 

下面是代码

package newPack; 
import java.util.Scanner; 

public class CalculateMean 
{ 
public static void main(String[] args) 
{ 

    Scanner enterValues = new Scanner(System.in); 
    System.out.println("Enter the number of values. "); 


    int n = enterValues.nextInt(); 
    double[] set = new double[n]; 

    System.out.println("Enter values."); 
    for(int x=0; x<n; x++) 
    { 
    set[x] = enterValues.nextDouble(); 
    } 
    double sum = 0; 

    for(int cnt=0; cnt < set.length; cnt++) 
    { 
    sum += set[cnt]; 
    } 

    double mean = sum/n; 

    System.out.println("The average of the values is " + mean); 

    } 

}  
+0

和当然是'n'。 –

相关问题