Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java找不到符号错误-来自另一个类的方法_Java_Class_Methods_Compiler Errors_Symbols - Fatal编程技术网

Java找不到符号错误-来自另一个类的方法

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

我试图通过以下方式从类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 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);