我需要編寫,根據這些準則落在程序:編程代碼,它是當給出一個具體的日期
寫一個程序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
我真的不知道如何解決這個問題,有人可以幫助我。我對編碼還很陌生。
當你的代碼嘗試以有意義的方式命名變量,即不要使用c作爲varibale名稱也查看厄運的金字塔。這樣其他人將能夠理解你的代碼。 –
該語法無效,錯誤消息告訴你爲什麼。重寫代碼以正確進行比較。你已經在代碼的其他地方完成了它。至於第二個,看看你聲明'b'的範圍,並考慮編譯器如何看到'if..else'語句列表(以及如果沒有滿足這些條件會發生什麼情況) ;在那種情況下會宣佈'b'? –
你預計'b'能得到比「星期天」還要多的東西嗎? – Tom