Java 变量已定义?
在学习tpass参数时,我遇到了一个问题,我无法解释程序显示错误的原因。我将突出显示下面的代码Java 变量已定义?,java,netbeans,Java,Netbeans,在学习tpass参数时,我遇到了一个问题,我无法解释程序显示错误的原因。我将突出显示下面的代码 public class pkgExone { static void displayMarkRange(int[] ref,double[] mark, double size,double topValue, double bottomValue, String message) { int index; //declare a varia
public class pkgExone
{
static void displayMarkRange(int[] ref,double[] mark, double size,double topValue,
double bottomValue, String message)
{
int index; //declare a variable index
System.out.println("\n\n"+ message+"\n\n"); //print parameter message
System.out.println("Reference \t Mark ");
System.out.println("Number \t Obtained\n");
// loop through the whole array and decide whether to print a students mark
for(index=0;index<=size-1;index=index+1)
{
if ((mark[index]>= bottomValue) && (mark[index]<=topValue))
{
System.out.println( ref[index]+" \t\t\t"+ mark[index]);
} // end if construct
} // end for loop
System.out.println("\n\n");
} // end of displayMarkRangeMethod
static double Calaverage(double [] mark, double size)
{
int index;
double total=0;
double calculatedaverage;
int validentries=0;
for (index=0;index<=size-1;index ++)
if ((mark[index]>=1) && (mark [index] <=100))
{
**double total + mark [index];
int validentries= validentries +1;**
}
**double calculatedaverage = total/validentires;**
return calculatedaverage;
}
public static void main(String[] args)
{
double [] ref;
double Averagemark;
double howMany=10;
int[] studentID = {900,901,902,903,904,905,906,907,908,909};
double[] examMark = {23,45,56,90,83,114,48,39,26,102};
displayMarkRange(studentID,examMark,howMany,100,1,"All Students that have valid marks");
displayMarkRange(studentID,examMark,howMany,100,70,"All Distinction students");
displayMarkRange(studentID,examMark,howMany,69,55,"All Merit students");
displayMarkRange(studentID,examMark,howMany,54,40,"All Pass students");
displayMarkRange(studentID,examMark,howMany,39,1,"All Fail students");
displayMarkRange(studentID,examMark,howMany,69,40,"All Pass or Merit students");
displayMarkRange(studentID,examMark,howMany,100,90,"Student that got between 90 and 100");
displayMarkRange(studentID,examMark,howMany,10,1,"Student that got between 10 and 1");
displayMarkRange(studentID,examMark,howMany,80,20,"Student that got between 80 and 20");
displayMarkRange(studentID,examMark,howMany,100,**Averagemark**,"Students that got more than the average");
displayMarkRange(studentID,examMark,howMany,Averagemark,1,"Students that got less than the average");
displayMarkRange(studentID,examMark,howMany,120,101,"Students whos marks are invalid");
}// end of psvm
}//end of public class
double total+mark[index]
在语法上毫无意义。您的意思可能是total+=mark[index]
,因为您已经声明了double total
类似的参数也适用于第二个错误:您正在重新声明calculatedaverage
。在这里,您只需放下两个
不过,我建议删除整个变量calculatedaverage
,只需编写返回总计/有效身份代码>双倍合计+标记[索引]
在语法上毫无意义。您的意思可能是total+=mark[index]
,因为您已经声明了double total
类似的参数也适用于第二个错误:您正在重新声明calculatedaverage
。在这里,您只需放下两个
不过,我建议删除整个变量calculatedaverage
,只需编写返回总计/有效身份代码>正如上面所说的,看一看这一行**双倍合计+标记[索引]代码>。不应该是total+=mark[索引]代码>
仔细查看例外情况。正如它所说的,请查看这一行**双倍合计+标记[索引]代码>。不应该是total+=mark[索引]代码>
仔细查看例外情况。以下内容在语法上无效:
double total + mark [index];
我猜你是想说:
total += mark [index];
下一行还有一个问题:
int validentries= validentries +1;
虽然在语法上有效,但它隐藏了其他validentries
,而不是更新它。使用:
validentries= validentries +1;
最后,声明了两次calculatedaverage
。您可以删除出现在函数顶部的声明:
double calculatedaverage;
以下内容在语法上无效:
double total + mark [index];
我猜你是想说:
total += mark [index];
下一行还有一个问题:
int validentries= validentries +1;
虽然在语法上有效,但它隐藏了其他validentries
,而不是更新它。使用:
validentries= validentries +1;
最后,声明了两次calculatedaverage
。您可以删除出现在函数顶部的声明:
double calculatedaverage;
这是无效的代码
double total + mark [index];
也许你是有意的
total += mark [index];
对于给定的范围,只能声明一次变量
而不是
**double calculatedaverage = total/validentires;**
return calculatedaverage;
我只是
return total / validentires;
出于您的兴趣,我可能会这样写这个方法。注意:size
必须是int
而不是double
static double average(double... marks) {
double total = 0;
int count= 0;
for(double mark: marks) {
if (mark < 1 || mark > 100) continue;
total += mark;
count++;
}
return total / count;
}
还是为了一些分数
double average = average(Arrays.copy(marks, size)); // note size must be an int.
这是无效的代码
double total + mark [index];
也许你是有意的
total += mark [index];
对于给定的范围,只能声明一次变量
而不是
**double calculatedaverage = total/validentires;**
return calculatedaverage;
我只是
return total / validentires;
出于您的兴趣,我可能会这样写这个方法。注意:size
必须是int
而不是double
static double average(double... marks) {
double total = 0;
int count= 0;
for(double mark: marks) {
if (mark < 1 || mark > 100) continue;
total += mark;
count++;
}
return total / count;
}
还是为了一些分数
double average = average(Arrays.copy(marks, size)); // note size must be an int.
由于您刚刚开始,我建议您使用一个好的JavaIDE,以便在编译之前捕获此类错误。看看或者。两者都将提供解决这些问题的方案。由于您刚刚起步,我建议您使用一个好的JavaIDE,以便在编译之前捕获此类错误。看看或者。两者都将为解决这些问题提供解决方案@PatrickVonOhsen移除int validentries=validentries+1前面的int
代码>。正如Peter所说,在声明变量时,只需指定一次变量的类型@PatrickVonOhsen移除int validentries=validentries+1前面的int
代码>。正如Peter所说,在声明变量时,只需指定一次变量的类型。