[英]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.