有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在创建重载构造函数、实例化对象时遇到问题

我是Java新手,我很难理解老师的视频讲座(我正在参加一个在线课程),我也很难完成这个作业:

Create a FitnessTracker class that includes data fields for a fitness activity, the number of minutes spent participating, calories used, and the date. The class includes methods to get each field. In addition, create a default constructor that automatically sets the activity to “running,” the minutes to 0, calories used to 0, and the date to January 1 of the current year. Save the file as FitnessTracker.java. Create an application that demonstrates each method works correctly, and save it as TestFitnessTracker.java.

b. Create an additional overloaded constructor for the Fitness Tracker class you created in Exercise 3a. This constructor receives parameters for each of the data fields and assigns them appropriately. Add any needed statements to the TestFitnessTracker application to ensure that the overloaded constructor works correctly, save it, and then test it.

c. Modify the Fitness Tracker class so that the default constructor calls the four-parameter constructor. Save the class as FitnessTracker2.java. Create an application to test the new version of the class, and name it TestFitnessTracker2.java.

我也一直在看一些youtube视频,它们帮助我理解了一些东西,但我仍然没有完全理解。 我一直在“date方法”旁边出现一个错误“modifier day的非法参数,只允许final”,以及其他错误。 以下是我到目前为止的情况,但我现在有点迷茫,不知道如何前进:

package javaProgramming;

import java.util.Scanner;

public class fitnessTracker {
    public static void main(String[] args){ 
       tracker trackerObject = new tracker("January 1st", "running", 0, 0);
    }
}

class tracker {
    public tracker(String date, String active, int mins, int cal){
       Scanner input = new Scanner(System.in);
    
       System.out.println("What day are you recording this activity for?");
       public String day = input.nextLine();
    
       System.out.println("What fitness exersise did you complete?");
       public String active = input.nextLine();

       System.out.println("How many minutes did you spend " + active + "?");
       public int mins = input.nextInt();
    
       System.out.println("How many calories did you burn?");
       public int cal = input.nextInt();
    }
            
    public static void date(String day){
           System.out.println("I did this on " + day + ".");
        
    public static void activity(String active){
        System.out.println("Today I plan on " + active);
    }
    
    public static void minutesSpent(int mins){
        System.out.println("I spent " + mins + " minutes doing so.");
    }
    
    public static void caloriesUsed(int cal){
        System.out.println("I burned " + cal + " calories.");
    }
}

如果有人能帮我解决这个问题,我将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    试试这个

    类1(包含main方法)

    package javaProgramming;
    
    import java.util.Scanner;
    
    public class FitnessTracker {
    
        public static void main(String[] args){ 
            Tracker trackerObject = new Tracker("January 1st", "running", 0, 0);
            Scanner input = new Scanner(System.in);
    
            String day;
            String active;
            int mins;
            int cal;
    
    
            System.out.println("What day are you recording this activity for?");
            day = input.nextLine();
    
            System.out.println("What fitness exersise did you complete?");
            active = input.nextLine();
    
            System.out.println("How many minutes did you spend " + active + "?");
            mins = input.nextInt();
    
            System.out.println("How many calories did you burn?");
            cal = input.nextInt();
    
            trackerObject.date(day);
            trackerObject.activity(active);
            trackerObject.minutesSpent(mins);
            trackerObject.caloriesUsed(cal);
        }
    }
    

    2类

    package javaProgramming;
    
    class Tracker {
    
        private String day;
        private String active;
        private int mins;
        private int cal;
    
        public Tracker(String date, String active, int mins, int cal){
            this.day = date;
            this.active = active;
            this.mins = mins;
            this.cal = cal;     
        }
    
        public void date(String day){
            System.out.println("I did this on " + day + ".");
        }
        public void activity(String active){
            System.out.println("Today I plan on " + active);
        }
    
        public void minutesSpent(int mins){
            System.out.println("I spent " + mins + " minutes doing so.");
        }
    
        public void caloriesUsed(int cal){
            System.out.println("I burned " + cal + " calories.");
        }
    }
    

    我的版本:

    1. 按照惯例,类名以大写字母开头
    2. Scanner输入只在main方法中发生,将用户输入值传递给Tracker类,以便构造函数可以初始化每个变量的值。设置的值将传递给类中日期、活动、分钟消耗、卡路里使用方法的每个参数

    这是我的控制台中的输出:

    What day are you recording this activity for?
    3
    What fitness exersise did you complete?
    squat
    How many minutes did you spend squat?
    5
    How many calories did you burn?
    100
    I did this on 3.
    Today I plan on squat
    I spent 5 minutes doing so.
    I burned 100 calories.
    

    我希望这有帮助

  2. # 2 楼答案

    不能在函数中使用public,只能在类上下文中使用:

    public String day = input.nextLine();
    

    要么删除public

    String day = input.nextLine();
    

    或者将变量的声明移动到类:

    class tracker{
        public String day;
        public tracker(String date, String active, int mins, int cal){
            day = input.nextLine();