2016-11-05 13 views
0

私はenum/switch caseをZellerの式とともに使用して、特定の日付がどの曜日になるのかを説明しています。私のコードは、私のコードのenum/switch部分(下記)を実装する前の、適切な日を印刷していました。私は列挙型/スイッチケースに入れた後、私はDrJavaでそれを実行すると、それはあなたの場合は、スイッチケーススイッチケースを使用した後に出力が印刷されないJava

import java.util.*; 

public class Zeller { 

    public enum DaysOftheWeek { 

    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; 
    } 

    private static int value; 



    public Zeller (int value){ 
    this.value = value; 
    } 
    public int getValue(){ 
    return this.value; 
    } 

    public static void main(String[] args) { 
     DetermineDay(value);  // Create a Scanner 
     Scanner input = new Scanner(System.in); 

     // Prompt the user to enter a year, month and a day 


     System.out.print("Enter month: 1-12: "); 
     int month = input.nextInt(); 

     System.out.print("Enter the day of the month: 1-31: "); 
     int day = input.nextInt(); 

     System.out.print("Enter year (e.g., 2008): "); 
     int year = input.nextInt(); 

     // Check if the month is January or February 
     // If the month is January and February, convert to 13, and 14, 
     // and year has to -1. (Go to previous year). 
     if (month == 1 || month == 2) { 
      month += 12; 
      year--; 
     } 

     // Compute the answer 
     int k = year % 100; // The year of the century 
     int j = (int)(year/100.0); // the century 
     int q = day; 
     int m = month; 
     int h = (q + (int)((13 * (m + 1))/5.0) + k + (int)(k/4.0) 

      + (int)(j/4.0) + (5 * j)) % 7; 
     value = h; 

     System.out.println(value); 

    } 

    public static String DetermineDay(int value){ 

     String result = "Day of the week is "; 

    switch (value){ 

     case 1 : 
     System.out.println(result + "Sunday"); 
     break; 
     case 2 : 
     System.out.println(result + "Monday"); 
     break; 
     case 3: 
     System.out.println(result + "Tuesday"); 
     break; 
     case 4: 
     System.out.println(result + "Wednesday"); 

     break; 
     case 5: 
     System.out.println(result + "Thursday"); 
     break; 

     case 6: 
     System.out.println(result + "Friday"); 
     break; 
     case 7 : 
     System.out.println(result + "Saturday"); 
     break; 
     default : 
     System.out.println ("Looks like that day doesn't exist"); 
     break; 
    } 


    return result;  
    } 
} 
+3

? –

+0

あなたは 'DetermineDay'の呼び出し方法を共有していないので、その呼び出しの後に何が起こるかはわかりません。 – janos

+0

あなたのメソッドを呼び出すことを忘れてしまったことは間違いありません。おそらく、あなたのメソッドに 'value'のためのパラメータを与えたいでしょう。 –

答えて

0
  • を通過したら、それは、その日の月と年が、何も印刷を要求しませんDetermineDayを使用して日を出力したい場合は、計算を行った後にそのメソッドを呼び出し、その結果をvalueに代入する必要があります。
  • これはうまくいくようですが、このプログラムを日付4/11/2016で試してみると、それが金曜日であることがわかりますが、今日の5/5/2016の日付を使用しているときにアルゴリズムに問題があります。出力はです。その日のように見えませんか?、そうですね。
  • DetermineDayの最後には、スイッチ内で結果が既に消滅しているため、結果を返す必要はありません。あなたは `DetermineDay`を呼び出している

    import java.util.*; 
    
    public class Zeller { 
    public enum DaysOftheWeek { 
        SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; 
    } 
    
    private static int value; 
    
    public Zeller (int value){ 
        this.value = value; 
    } 
    
    public int getValue(){ 
        return this.value; 
    } 
    
    public static void main(String[] args) { 
        // Create a Scanner 
        Scanner input = new Scanner(System.in); 
    
        // Prompt the user to enter a year, month and a day 
        System.out.print("Enter month: 1-12: "); 
        int month = input.nextInt(); 
    
        System.out.print("Enter the day of the month: 1-31: "); 
        int day = input.nextInt(); 
    
        System.out.print("Enter year (e.g., 2008): "); 
        int year = input.nextInt(); 
    
        // Check if the month is January or February 
        // If the month is January and February, convert to 13, and 14, 
        // and year has to -1. (Go to previous year). 
        if (month == 1 || month == 2) { 
        month += 12; 
        year--; 
        } 
    
        // Compute the answer 
        int k = year % 100; // The year of the century 
        int j = (int)(year/100.0); // the century 
        int q = day; 
        int m = month; 
        int h = (q + (int)((13 * (m + 1))/5.0) + k + (int)(k/4.0) + (int)(j/4.0) + (5 * j)) % 7; 
        value = h; 
    
        System.out.println(value); 
        DetermineDay(value); 
    } 
    
    public static void DetermineDay(int value){ 
        String result = "Day of the week is "; 
    
        switch (value){ 
        case 1 : 
        System.out.println(result + "Sunday"); 
        break; 
    
        case 2 : 
        System.out.println(result + "Monday"); 
        break; 
    
        case 3: 
        System.out.println(result + "Tuesday"); 
        break; 
    
        case 4: 
        System.out.println(result + "Wednesday"); 
        break; 
    
        case 5: 
        System.out.println(result + "Thursday"); 
        break; 
    
        case 6: 
        System.out.println(result + "Friday"); 
        break; 
    
        case 7 : 
        System.out.println(result + "Saturday"); 
        break; 
    
        default : 
        System.out.println ("Looks like that day doesn't exist"); 
        break; 
        } 
    } 
    } 
    
関連する問題