Java找不到符号错误-来自另一个类的方法
我试图通过以下方式从类MarkMaker访问方法changeAll:Java找不到符号错误-来自另一个类的方法,java,class,methods,compiler-errors,symbols,Java,Class,Methods,Compiler Errors,Symbols,我试图通过以下方式从类MarkMaker访问方法changeAll: import java.util.Scanner; class Question10e { public static void main(String[] args) { System.out.println(); Scanner input = new Scanner(System.in); System.out.print("Enter mar
import java.util.Scanner;
class Question10e
{
public static void main(String[] args)
{
System.out.println();
Scanner input = new Scanner(System.in);
System.out.print("Enter mark 1: ");
int newm1=input.nextInt();
System.out.print("Enter mark 2: ");
int newm2=input.nextInt();
System.out.print("Enter mark 3: ");
int newm3=input.nextInt();
String linem=input.nextLine();
System.out.print("Enter a master password: ");
String masterpass = input.next();
linem=input.nextLine();
MarkMaker mm = new MarkMaker(masterpass);
Mark masterMark1 = mm.makeMark(newm1);
Mark masterMark2 = mm.makeMark(newm2);
Mark masterMark3 = mm.makeMark(newm3);
try{
System.out.println("The new mark 1 is "+masterMark1.provisional(masterpass));
System.out.println("The new mark 2 is "+masterMark2.provisional(masterpass));
System.out.println("The new mark 3 is "+masterMark3.provisional(masterpass));
System.out.println("The new master password is is "+masterMark1.returnPass());
int avg = mm.average();
System.out.println("The average is "+avg);
changeAll(5.5, 3);
}
catch(IncorrectPasswordException e){}
}
}
这是MarkMaker类:
import java.util.*;
class MarkMaker{
private String masterPass = "";
private ArrayList<Mark> masterArr = new ArrayList<Mark>();
public MarkMaker(String masterPass)
{
this.masterPass = masterPass;
}
public Mark makeMark(int m)
{
Mark newMarkObj = new Mark(m,masterPass);
masterArr.add(newMarkObj);
return newMarkObj;
}
public ArrayList<Mark> returnMasterArr()
{
return masterArr;
}
public int average() throws IncorrectPasswordException
{
int n = 0;
for(int i=0; i<masterArr.size(); i++)
{
n = n + masterArr.get(i).provisional(masterPass);
}
int avg = n/masterArr.size();
return avg;
}
public void changeAll(double d, int x) throws IncorrectPasswordException
{
for(int i=0; i<masterArr.size(); i++)
{
double currentMark = masterArr.get(i).provisional(masterPass);
System.out.println("Current mark is: "+currentMark);
currentMark = currentMark*d;
System.out.println("Current mark is: "+currentMark);
currentMark = Math.ceil(currentMark);
System.out.println("Current mark is: "+currentMark);
}
} }
问题是我总是得到一个“找不到符号错误-方法changeAll(double,int),位置类Question10e”Question10e没有这个方法。也许您打算在一个类的实例上调用它,该类确实喜欢
mm.changeAll(5.5, 3);
changeAll
是属于MarkMaker
类的方法,而不是当前的Question10e
类,您试图调用该方法:
mm.changeAll(5.5, 3);
您需要通过
MarkMarker
对象调用changeAll()
。它不存在于你的问题10e
课堂中。因此,您可以通过以下方式实现:
mm.changeAll(5.5, 3)
仅仅因为changeAll()
是public
并不意味着你可以在任何地方调用它。它只是意味着MarkMarker
对象可以从任何地方调用它。您需要
mm.changeAll(5.5, 3);
mm.changeAll(5.5, 3);