接收错误:不兼容的类型:我的数组可能从double转换为int

时间:2015-11-19 15:14:21

标签: java arrays parsing int double

我在第18行收到此错误。我不知道为什么编译器要求我在数组等级和变量gradeNum都是double类型时将变量gradeNum强制转换为int类型。免责声明:此代码远未完成。我唯一的问题是这个错误与数组等级和变量gradeNum有关。

import java.util.*;

public class Lab10{

static Scanner console = new Scanner(System.in);

static String temp = "";
static double gradeNum = 0.0;
static String temp2 = "";

public static void main(String [] args) {


System.out.println("Please enter how many grades you would like to input: ");
temp = console.nextLine();
gradeNum = Double.parseDouble(temp);

double [] grade = new double [gradeNum]; 

System.out.println("Okay now please enter each individual grade: ");
temp2 = console.nextLine();


} // end of main

} // end of class Lab10

3 个答案:

答案 0 :(得分:2)

[] new double[size]内的内容是双数组的大小。不是数组的内容。

你正试图这样做吗? 我在这里假设大小为1,但您可能需要根据需要进行调整

double [] grade = new double[1]; 
grade[1] = gradeNum;

答案 1 :(得分:1)

初始化数组并且必须提供不能仅为double的整数的大小。你不能创建只包含3或4个3.6元素的数组。

答案 2 :(得分:0)

你不能使用double来指定数组大小,根据JLS Chapter 10,只允许非负整数值,这就是编译器要你强制转换的原因将gradeNum加倍到int。

  

数组中包含的变量没有名称;相反,它们由使用非负整数索引值的数组访问表达式引用。这些变量称为数组的组件。如果一个数组有n个组件,我们说n是数组的长度;使用0到n - 1之间的整数索引来引用数组的组件。

因此您需要将代码更改为:

static int gradeNum = 0;
....
gradeNum = Integer.parseInt(temp);