JAVA:为啥我不能访问同一个类中的方法?

Posted

技术标签:

【中文标题】JAVA:为啥我不能访问同一个类中的方法?【英文标题】:JAVA: Why can't I access a method in the same class?JAVA:为什么我不能访问同一个类中的方法? 【发布时间】:2014-03-28 02:56:14 【问题描述】:

我似乎无法找出为什么我的静态方法无法调用同一类中的其他方法。我该怎么办?

    import java.util.Scanner;
    import java.util.*;

    public class MashupII 

      public void Append(Sound clip, boolean rev, double scale)


        //Void methods...


            //main method
      public static void main (String [] args) 

        Scanner keyboard = new Scanner(System.in);

        clips = new Sound[100];

        System.out.println("Please enter your command (A, I, D, P or Q)");   
        char command = Character.toUpperCase(keyboard.next().charAt(0));

        while (command != 'Q')
          switch (command)
            case 'A': 

              //APPENDING
              //pick the clip
              System.out.println("Please pick a file.");      
              Sound clip = new Sound(FileChooser.pickAFile());

              //reversing
              System.out.println("Would you like to reverse the clip? (Y|N)");
              String reverse = keyboard.nextLine();

              boolean rev = reverse.equalsIgnoreCase("Y");


              //scaling
              System.out.println("How much should the clip be scaled? (1 is no scaling)");
              double scale = keyboard.nextDouble();

              clips.Append(clip,rev,scale);

              break;
            case 'I':
              break;
            case 'D':
              System.out.println("Which clip would you like to delete? (1- end)");
              int p = keyboard.nextInt();
              clips.Delete(p);
              break;
            case 'P':
              break;
            default: 
              System.out.println("Error! Please enter one of the available commands (A, I, D, P or Q)");
          
          System.out.println("Please enter another command (A, I, D, P or Q)");
          command = Character.toUpperCase(keyboard.next().charAt(0));
        
      

我在开关盒中收到错误。它给了我一个找不到的符号。任何帮助都会很棒!

【问题讨论】:

找不到哪个符号? clips.Append(clip,rev,scale);... Clips 是您的声音阵列。 我没有看到你使用MashupII中声明的任何方法。 同意.. @user1760791 请输入正确的代码 sn-p。 请发布一个简短但完整的程序来说明问题。 【参考方案1】:

clips 不是您的 MashupII 类的实例,这就是您无法调用 MashupII 的 append() 方法的原因。

【讨论】:

以上是关于JAVA:为啥我不能访问同一个类中的方法?的主要内容,如果未能解决你的问题,请参考以下文章

java中的四种访问权限是?

为啥我们不能在 Kotlin 的 Singleton 类(对象)中使用受保护的访问修饰符

为啥我不能从 gcc 中的前身模板化成员函数访问祖先方法?

为啥另一个包中的子类不能访问受保护的方法?

如何理解“子类不能降低父类中定义的方法的可访问性”这句话?

Java重写和重载