【问题标题】:Why do I keep getting this error when creating an array that is a double?为什么在创建双精度数组时不断收到此错误?
【发布时间】:2017-04-10 19:23:40
【问题描述】:
System.out.print("How many QUIZ scores? ");
double howManyQuizzes = input.nextDouble();
double[] quizScoresArray = new double[howManyQuizzes];

System.out.print("Enter QUIZ scores: ");
for (double i = 0; i < howManyQuizzes; i++)
{
    quizScoresArray[i] = input.nextDouble();
}

System.out.println(" ");

我正在尝试编写一个程序来计算你的班级成绩。它考虑了测验、考试、课程等的价值。

我的这部分代码有问题。我对为什么我的代码无法编译感到困惑。我正在尝试创建一个双精度类型数组,因为我们为测验分数输入的值必须是双精度值。但是,当我编译我的程序时,我不断收到此错误消息:“不兼容的类型:从 double 到 int 的可能有损转换。”我不知道为什么会这样正在发生,想知道是否有人可以提供一些见解。谢谢!

【问题讨论】:

  • 您不能使用 double 作为长度来创建数组。
  • 您正在使用double,它可以保存像2.33 这样的值。 new double[2.33] 的结果应该是什么?还有应该为索引yourArray[0.25]返回什么值?
  • howManyQuizzes 必须是 int

标签: java arrays double


【解决方案1】:

您不能使用double 变量迭代for 循环,因此将其更改为int 数据类型,如下所示:

int howManyQuizzes = input.nextInt();

此外,for 循环应该使用从 0、1、...直到 howManyQuizzes-1 值的 int 值进行迭代

for (int i = 0; i < howManyQuizzes; i++) {
    quizScoresArray[i] = input.nextDouble();
}

我不知道你不能使用双变量来迭代一个 for 循环!

double 保存十进制数据,因此您的迭代(如果可能的话)将像 0、0.1、0.2、0.3 等(中间也是无限数),这是不可能的。 因此,您的循环计数器应该是 int 类型,它将从 0、1、... 直到 howManyQuizzes-1 值迭代(因为整数在 0 和 1 或 1 和 2 等之间不包含任何中间值......,简单的数学)

【讨论】:

  • 哇哦!这么简单的答案哈哈。太感谢了!我不知道您不能使用双变量来迭代 for 循环!
  • 你也可以用另一个字母代替i作为循环变量。
  • double是十进制类型,所以要迭代0、0.1、0.2、0.3等吗?所以,我们需要int类型
【解决方案2】:

创建数组时,大小必须是整数。实际上,您的尺寸是两倍。 改变这一行

double howManyQuizzes = input.nextDouble();

int howManyQuizzes = input.nextInt();

【讨论】:

  • 是的short也可以,java会提升为int
【解决方案3】:
double[] quizScoresArray = new double[howManyQuizzes];

这是错误的,你不能用双精度值声明数组,而必须使用 int。

System.out.print("How many QUIZ scores? ");
int howManyQuizzes = input.nextInt();
double[] quizScoresArray = new double[howManyQuizzes];

【讨论】:

  • 只有正面的int
猜你喜欢
  • 2021-05-24
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
相关资源
最近更新 更多