Java 变量已定义?

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

在学习tpass参数时,我遇到了一个问题,我无法解释程序显示错误的原因。我将突出显示下面的代码

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所说,在声明变量时,只需指定一次变量的类型。