1
4

4 に答える 4

2

eventsスコープ内に events という名前のローカル変数がなく、メイン クラスに events という名前の静的変数がないため、メイン メソッドは何が何であるかを認識していません。次のように、特定のカレンダー オブジェクト内のイベント オブジェクトを探していることを伝える必要があります。

System.out.println(calendarObject.events[0]);

これは、2 つのクラスが同じパッケージに含まれているか、両方ともパッケージが宣言されていないことを前提としています (つまり、両方とも既定のパッケージに含まれています)。2 つのクラスが異なるパッケージにある場合は、インスタンス メンバーをパブリックとして公開するか、他のメンバーが参照できるようにアクセスするパブリック メソッドを作成する必要があります。

クラスベースのオブジェクトの考え方は、クラスを使用して複数のオブジェクトを作成できるということです。カレンダー クラスのオブジェクトを 1 つしか作成しないため、この課題ではあまりうまくいかないかもしれません。オブジェクトのメンバーを参照するには、そのメンバーを探しているオブジェクトを指定する必要があります。

于 2012-10-06T14:54:47.680 に答える
1

まず、サイズをハードコードしないで、定数を使用すると言いました。したがって、次のように定数を作成します。

private static final int ARRAY_SIZE = 5;

そして、宣言を次のように変更します

String[] events = new String[ARRAY_SIZE];

また、アレイを初期化するときは、for-counter ループを使用して、動的ではないため、{いくつかの「-イベントは計画されていません」} ではなく、各スロットを「-イベントは計画されていません-」に設定します。一定のサイズでは変わりません。

また、コンストラクターで型宣言を削除します

String[] events->events

型を宣言することにより、フィールドを変更するのではなく、新しいローカル変数を作成します。したがって、配列内のスロットは、変更していないためすべて null のままですが、このローカル変数内のフィールドは変更されません。

于 2012-10-06T14:45:31.580 に答える
0

コンストラクター内でローカルevents配列を宣言しているため、デフォルト値No event plannedはインスタンス変数に割り当てられeventsません。

public calender() {
    //Initializes your events array

    events = { "-No event planned-",
               "-No event planned-",
               "-No event planned-",
               "-No event planned-",
               "-No event planned-"};

    //end calender class constructor
}

それがうまくいくことを願っています

于 2012-10-06T16:33:56.300 に答える
-1
import java.util.Scanner;

//begin class driver       
public class driver {

/**
 * @paramargs the command line arguments
 */
//begin main method
    public static void main(String[] args) {
    //initiates scanner
        Scanner userInput = new Scanner (System.in);

    //declare variables
    int dayOfWeek;
    String userEvent;

    //creates object for calender class
    calender calenderObject = new calender();
    calender.fillArray();

    //user prompt
    System.out.println("Enter day of week for your event in the following format:");
    System.out.println("Enter 1 for Monday");
    System.out.println("Enter 2 for Tuesday");
    System.out.println("Enter 3 for Wednsday");
    System.out.println("Enter 4 for Thursday");
    System.out.println("Enter 5 for Friday");
    System.out.println("Enter -1 to quit");

    //collect user input
    dayOfWeek = userInput.nextInt(); 

    //user prompt
    System.out.println("Please type in the name of your event");

    //collect user input
    userEvent = userInput.next();

    //begin while loop
    while (dayOfWeek != -1) {
        if ((dayOfWeek>=1) && (dayOfWeek<=5)){
            calenderObject.createEvent(dayOfWeek, userEvent,dayOfWeek);
            for (int i=0;i<calender.length;i++){
                System.out.println(calender.events[i]);
            }
            dayOfWeek = userInput.nextInt();

            if  (dayOfWeek == -1){
                for (int i=0;i<calender.length;i++){
                    System.out.println(calender.events[i]);
                }
                System.exit(0);
            }
            System.out.println("Please type in the name of your event");    
            userEvent = userInput.next();
        } else{
            System.out.println("You have entered an invalid number");
            System.out.println("Press -1 to quit or enter another day");
            System.out.println("Enter 1 for Monday");
            System.out.println("Enter 2 for Tuesday");
            System.out.println("Enter 3 for Wednsday");
            System.out.println("Enter 4 for Thursday");
            System.out.println("Enter 5 for Friday");
            System.out.println("Enter -1 to quit");
            dayOfWeek = userInput.nextInt(); 
        }
    }

    //end main method
}

}

    //begin calender class
public class calender {

    static int length = 5;
    static String[] events = new String[length];

    public static String[] fillArray(){
        for (int i=0; i< length;i++){
            events[i] = "-No event planned-";
        }
        return events;
    }

    //begin createEvent method
public String[] createEvent(int l, String userEvent, int dayOfWeek){
    int t = l;
        if(t%5 == 1 ){
            events[0] = ("Monday Appoinment: ") + userEvent;
        } else if(t%5 == 2 ){
            events[1] = ("Tuesday Appoinment: ") + userEvent;
        } else if(t%5 == 3 ){
            events[2] = ("WednsdayAppoinment: ") + userEvent;
        } else if(t%5 == 4){
            events[3] = ("Thursday Appoinment: ") + userEvent;
        } else if(t%5 == 0 ){
            events[4] = ("Friday Appoinment: ") + userEvent;
        }        
        return events;
    }

//end calender class    
}
于 2012-10-06T17:15:55.890 に答える