【问题标题】:Trouble Writing a display method编写显示方法时遇到问题
【发布时间】:2014-10-13 13:09:40
【问题描述】:

请看一下,如果可以的话,请提供一些指导。

public class VacationScale {

    int [] vacationDays;

    int yearsOfService;

    public void setVacationScale() {

        vacationDays = new int[7];

        vacationDays[0] = 10;
        vacationDays[1] = 15;
        vacationDays[2] = 15;
        vacationDays[3] = 15;
        vacationDays[4] = 20;
        vacationDays[5] = 20;
        vacationDays[6] = 25;

        public static void displayvacationDays(){
            if(yearsOfService >=0){
                System.out.println("Vacation days " + vacationDays[yearsOfService]);
            } else {
                System.out.println("Invalid years of service");
            }
         }
    }
}

在我编写方法之前一切都很好,eclipse 告诉我

“参数displayvacationDays的非法修饰符;只允许final”

显然,当我尝试 final 时,它也不起作用。 (我知道 final 行不通,但我只是想尝试一下)

public static void displayvacationDays(){

      if(yearsOfService >=0){
          System.out.println("Vacation days " + vacationDays[yearsOfService]);
      }
      else {
          System.out.println("Invalid years of service");
      }
}

对如何让这种方法发挥作用有什么想法吗?

【问题讨论】:

    标签: java arrays if-statement methods


    【解决方案1】:

    您正在从 public static void displayvacationDays(){ 中访问实例数据。因此,声明为非静态:

    public void c(){..}
    

    不是:

    public static void displayvacationDays(){..}
    

    而且,还有setVacationScale函数作为一个单独的函数,没有嵌套

    【讨论】:

      【解决方案2】:

      在您发布的第一个代码中,displayvacationDays() 包含在 setVacationScale() 方法中。

      如果这是您的真实代码,而不是某些复制和粘贴错误,请将其移到该方法之外。

      此外,要么将vacationDayssetVacationScale() 都设为静态,要么不将displayvacationDays() 设为静态。

      【讨论】:

      • 你我的朋友,刚刚为我节省了几个小时。谢谢你。简直不敢相信那是多么简单。代表我犯了错误。
      【解决方案3】:

      您不能在方法中声明方法。这样做:

      int [] vacationDays;
      
      int yearsOfService;
      
      public void setVacationScale() {
      
          vacationDays = new int[7];
      
          vacationDays[0] = 10;
          vacationDays[1] = 15;
          vacationDays[2] = 15;
          vacationDays[3] = 15;
          vacationDays[4] = 20;
          vacationDays[5] = 20;
          vacationDays[6] = 25;
      }
      
      public void displayvacationDays(){
      
          if(yearsOfService >=0)
          {
              System.out.println("Vacation days " + vacationDays[yearsOfService]);
           }
           else
           {
               System.out.println("Invaild years of service");
           }
      }
      

      【讨论】:

        【解决方案4】:
        • 方法displayvacationDays 的声明放错了位置(在方法setVacationScale 的声明中)
        • displayvacationDays 应该是非静态的,因为它适用于实例的变量。

        更正的代码:

        public class VacationScale {
        
            int[] vacationDays;
            int yearsOfService;
        
            public void setVacationScale () {
        
                vacationDays = new int[7];
        
                vacationDays[0] = 10;
                vacationDays[1] = 15;
                vacationDays[2] = 15;
                vacationDays[3] = 15;
                vacationDays[4] = 20;
                vacationDays[5] = 20;
                vacationDays[6] = 25;
            }
        
            public void displayvacationDays () {
                if (yearsOfService >= 0) {
                    System.out.println("Vacation days " + vacationDays[yearsOfService]);
                } else {
                    System.out.println("Invaild years of service");
                }
            }
        }
        

        【讨论】:

        • 谢谢。为我节省了很多时间。我不敢相信那是多么简单。代表我犯了大错。再次感谢您。
        猜你喜欢
        • 1970-01-01
        • 2013-11-06
        • 2020-09-15
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-14
        相关资源
        最近更新 更多