2017-09-26 57 views
-3

我需要編寫,根據這些準則落在程序:編程代碼,它是當給出一個具體的日期

寫一個程序DayOfWeek.java接受一個日期作爲輸入並打印那一天的那一天正在落下。你的程序應該有三個命令行參數:m(月),d(日)和y(年)。對於1月份使用1,2月份使用2,等等。對於週日輸出打印0,週一輸出1,週二輸出2,等等。使用下面的公式,對於格里高利曆(其中/表示整數除法):

y0 = y − (14 − m)/12 
x = y0 + y0/4 − y0/100 + y0/400 
m0 = m + 12 × ((14 − m)/12) − 2 
d0 = (d + x + 31m0/12) mod 7 

到目前爲止,這是我自己寫的

import java.util.Scanner; 

public class DayOfWeek { 
    public static void main(String[] args) { 

    Scanner scanner = new Scanner(System.in); 

    boolean keepGoing = true; 

    while(keepGoing) { 
     System.out.println("Month"); 
     int m = scanner.nextInt(); 
     if (m < 1 || m > 12) { 
      System.out.println("Months are between 1 and 12"); 
      continue; 
     } 

     System.out.println("Day"); 
     int d = scanner.nextInt(); 
     if (d < 1 || d > 31) { 
      System.out.println("Days are between 1 and 31"); 
      continue; 
     } 

     System.out.println("Year"); 
     int y = scanner.nextInt(); 
     if (y < -10000 || y > 10000) { 
      System.out.println("Years are between -10000 and 10000"); 
      continue; 
     } 

     int y0 = y - (14 - m)/12; 
     int x = y0 + y0/4 - y0/100 +y0/400; 
     int m0 = m + 12 * ((14 - m)/12) - 2; 
     int d0 = (d + x + 31 * m0/12) % 7; 
     boolean c = 0 <= d0 <= 6; 

      if (c) { 
      String b = "Sunday"; 
      } else { 
      if (c) { 
       String b = "Monday"; 
      } else { 
       if (c) { 
       String b = "Tuesday"; 
      } else { 
       if (c) { 
       String b = "Wednesday"; 
       } else { 
       if (c) { 
        String b = "Thursday"; 
       } else { 
        if (c) { 
        String b = "Friday"; 
        } else { 
        if (c) { 
         String b = "Saturday"; 
        }     
        } 
        } 
       } 
      } 
      } 
      } 

     System.out.println("The day of the week is " + b); 
    } 



    } 

} 

當我嘗試但運行它,它說

DayOfWeek.java:36: error: bad operand types for binary operator '<=' 
boolean c = 0 <= d0 <= 6; 
         ^
first type: boolean 
second type: int 

DayOfWeek.java:66: error: cannot find symbol 
System.out.println("The day of the week is " + b); 
                ^
symbol: variable b 
location: class DayOfWeek 
2 errors 

我真的不知道如何解決這個問題,有人可以幫助我。我對編碼還很陌生。

+0

當你的代碼嘗試以有意義的方式命名變量,即不要使用c作爲varibale名稱也查看厄運的金字塔。這樣其他人將能夠理解你的代碼。 –

+0

該語法無效,錯誤消息告訴你爲什麼。重寫代碼以正確進行比較。你已經在代碼的其他地方完成了它。至於第二個,看看你聲明'b'的範圍,並考慮編譯器如何看到'if..else'語句列表(以及如果沒有滿足這些條件會發生什麼情況) ;在那種情況下會宣佈'b'? –

+0

你預計'b'能得到比「星期天」還要多的東西嗎? – Tom

回答

-2

boolean c = 0 <= d0 <= 6;boolean c = 0 <= d0 && d0 <= 6;

看看在java specs獲取如何使用關係運算符的想法。

基本上1 < 0是布爾類型的,你不能在布爾值上使用小於和大於。

+3

這可能是一個答案,如果你解釋了*爲什麼*這一行應該按照你所說的方式來書寫(如果你正在教授更好的做法)。這不是目前的狀態。 –

相關問題