我正在尝试编写一个简单的程序来计算已经过多少学生以及考试失败的人数。 我只是试图抓住"增强For Loop",但我在TextPad中得到以下错误:(它适用于普通的For循环思想)
error: possible loss of precision
if(marks[element]>40.0){
^
required: int
found: double
我的程序代码是:
public class Lab9Tut12{
public static void main (String[]args){
int passed = 0;
int failed = 0;
double [] marks = new double[20];
for(int i=0;i<20;i++){
marks[i] = Math.random()*100;
System.out.printf("%.2f", marks[i]);
System.out.println();
}
for(double element:marks){
if(marks[element]>40.0){
passed++;
}
else{
failed++;
}
}
System.out.println("Passed: " + passed + " failed: " + failed);
}
}
答案 0 :(得分:5)
写一下
if(element>40.0){
应该这样做。
增强的for循环为您提供列表/数组的元素,而不是索引。
答案 1 :(得分:2)
在for(double element:marks){
语句中,element
是marks[]
中的特定元素; 不数组索引。
因此,请改用if (element > 40.0){
。
(顺便说一下,虽然看到40.0很可爱但是因为int
40将在比较之前被隐式转换为浮点类型。你可以自信地使用40而不是。它主要归结为个人偏好虽然。)
答案 2 :(得分:1)
您在
中使用double值作为索引if(marks[element]>40.0)
因此,您不会在每个循环中使用。
你需要这样:
if(element>40.0)
答案 3 :(得分:1)
针对循环增强:您可以迭代数组的每个元素(限制:无索引控件)
for(double e:marks)
这里&#39; e&#39;是数组的元素,可以直接使用它。所以使用
if(element>40.0)