【问题标题】:Receiving error: incompatible types: possible lossy conversion from double to int for my array接收错误:不兼容的类型:我的数组从 double 到 int 的可能有损转换
【发布时间】:2016-02-21 19:38:24
【问题描述】:

我在第 18 行收到此错误。我不知道为什么当数组grade 和变量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

【问题讨论】:

    标签: java arrays parsing int double


    【解决方案1】:

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

    【讨论】:

    • 创建数组后可以放入double
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      您不能使用double 来指定数组大小,根据JLS Chapter 10,只允许非负整数值,这就是编译器希望您将双精度gradeNum 转换为int 的原因.

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多