繁体   English   中英

尝试在SOP语句中使用我的类中的方法时,如何使用它们?

[英]How do i use methods from a class that i made, when trying to use them in a SOP statement?

所以我试图使用我必须为学校编写的这段代码:

public class QuizScore 
{
private int qs[];
EasyReader d = new EasyReader();
public QuizScore(int num)
{
    int qs[]=new int[num]; 
    for(int i=0;i<num;i++)
    {
     System.out.println("Enter in your scores: ");
     qs[i] = d.readInt();
    }
}
public int getMax()
{
    int max=0;
    if(qs.length==0)
    {
        return 0;
    }
    for(int i=0;i<qs.length;i++)
    {
        max=qs[i];
        if(qs[i+1]>qs[max])
        {
            max=qs[i+1];
        }
        else
        {
            max=qs[i];
        }
    }
    return max;
}
public int getMin()
{
    if(qs.length==0)
    {
        return 0;
    }
    int min=0;
    for(int i=0;i<qs.length;i++)
    {
        min=qs[i];
        if(qs[i+1]<qs[min])
        {
            min=qs[i+1];
        }
        else
        {
            min=qs[i];
        }
    }
    return min;
}
public double getAvg()
{
    if(qs.length==0)
    {
        return 0;
    }
    int total=0;
    for(int i=0;i>qs.length;i++)
    {
        total+=qs[i];
    }
    int avg = Math.round(total/qs.length*10)/10;
    return avg;
}

并使用此代码尝试在这些SOP语句中使用它们。

public static void main(String args[])
{
    EasyReader d = new EasyReader();
    System.out.println("How many numbers are in your array?");
    int num = d.readInt();
    new QuizScore(num);
    System.out.println("Average: \t"+getAvg);
    System.out.println("Range: \t"+getMin+" - "+getMax);
    System.out.println("Score \t Frequency");
    System.out.println("------------------");

}

}

我究竟做错了什么? 我似乎无法弄清楚为什么我不能输入该方法。

非常感激。

您正在使用返回新对象的新运算符创建一个新的QuizeScore对象,但是没有将其保存在QuizScore类型的变量中。 QuizScore variableName = new QuizScore(num); 然后您可以访问该对象的方法,例如: variableName.getAvg() ; 并且在调用方法时不要忘记括号。

EasyReader d = new EasyReader();
System.out.println("How many numbers are in your array?");
int num = d.readInt();
QuizScore myQS = new QuizScore(num);
System.out.println("Average: \t"+myQS.getAvg());
System.out.println("Range: \t"+myQS.getMin()+" - "+myQS.getMax());
System.out.println("Score \t Frequency");
System.out.println("------------------");
public class QuizScore 
{
private int qs[];                  // you are declaring array here
EasyReader d = new EasyReader();
public QuizScore(int num)
{
    int qs[]=new int[num];        // declaring new array and using it.. You are not using the qs declared earlier.. Its scope is local. Change it to qs = new int[num]; 

    for(int i=0;i<num;i++)
    {
     System.out.println("Enter in your scores: ");
     qs[i] = d.readInt();
    }
}

在非静态方法中使用new关键字,您不能直接在方法中使用类名。

public static void main(String args[])
{

EasyReader d = new EasyReader();
System.out.println("How many numbers are in your array?");
int num = d.readInt();
new QuizScore(num);
System.out.println("Average: \t"+new QuizScore(num).getAvg());
System.out.println("Range: \t"+new QuizScore(num).getMin()+" - "+new QuizScore(num).getMax());   
 System.out.println("Score \t Frequency");
System.out.println("------------------");

 }

 }

检查代码后,代码应如下所示。 我们只能在对象的帮助下访问实例方法。 因此创建对象,将引用分配给变量并访问方法。

QuizScore qs = new QuizScore(num);
System.out.println("Average: \t"+qs.getAvg());
System.out.println("Range: \t"+qs.getMin()+" - "+qs.getMax());
System.out.println("Score \t Frequency");
System.out.println("------------------");

我想这会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM