已知該月第一天是星期四,最後一天是星期六,總天數為31日,
計算出該月中每一日是星期幾?
請用java程式表達
不是功課,只是正好做個功能需要用到這計算而已
逼逼
怎麼偷改問題 XD
const dayFormat = ['Monday', 'TuesDay', 'Wednesday', 'ThursDay', 'Friday', 'Saturday', 'Sunday'];
const monthToFind = new Date('2019-08');
const findDay = (dayToFind) => {
const monthTotalDays = new Date(monthToFind.getFullYear(), monthToFind.getMonth() + 1, 0).getDate();
const firstDayOfMonth = monthToFind.getDay();
const firstDateMathFind = firstDayOfMonth > dayToFind
? monthToFind.getDate() + (dayToFind - firstDayOfMonth + 7)
: monthToFind.getDate() + (dayToFind - firstDayOfMonth);
for (let date = firstDateMathFind; date <= monthTotalDays; date += 7) {
console.log(`${date} is ${dayFormat[dayToFind - 1]}`);
}
};
findDay(6);
計算該月每一日是星期幾
應該有 function 可以直接用吧
const findSpecificDate = (dateToFind) => {
const whatDayIsTheDate = new Date(dateToFind).getDay()
console.log(`${dateToFind} is ${whatDayIsTheDate === 0 ? dayFormat[6] : dayFormat[whatDayIsTheDate - 1]}`)
}
findSpecificDate('2019-08-07')
如果條件真的只有
已知該月第一天是星期四,最後一天是星期六,總天數為31日,
<!doctype html>
<html><head><meta charset='utf-8' /></head>
<body>
<script>
day_flag=4;
day_arr=[];
for(var i=0;i<31;i++){
day_arr.push(day_flag);
document.write((i+1)+'日是 星期'+num2weekday(day_flag)+'<br/>');
day_flag++;
if(day_flag>7) day_flag=1;
}
function num2weekday(arg){
return (arg==1?'一':(arg==2?'二':(arg==3?'三':(arg==4?'四':(arg==5?'五':(arg==6?'六':'日'))))));
}
document.write('<br/>=============<br/>');
query_date=10;
day_flag=day_arr[10-1];
document.write('查詢: '+(query_date)+'日是 星期'+num2weekday(day_flag)+'<br/>');
</script>
</body></html>
輸出結果:
1日是 星期四
2日是 星期五
3日是 星期六
4日是 星期日
5日是 星期一
6日是 星期二
7日是 星期三
8日是 星期四
9日是 星期五
10日是 星期六
…中間略過…
30日是 星期五
31日是 星期六
=============
查詢: 10日是 星期六
以上是土炮解法。
話說這個月的1日不正好是星期四嗎!!??
Re:"每次看這種相關問題感覺就是把功課丟上來伸手要答案"…恩,我也有這種感覺…
抱歉,這其實無論是哪種語言。解法都是一樣的。
認真來說,只要知道1號是星期幾。就可以算出來了。什麼最後一天星期6跟總天數31天的。
根本就不重要。
java我是不會寫啦,給你php參考。反正只是算數學。很容易帶過
<?php
$m1 = 4; //1號星期幾
$d = 10; //要求得同月$d號的星期
$w = (4+10-1)%7;
$wStrArr = Array('日','一','二','三','四','五','六');
echo "{$d}號為星期{$wStrArr[$w]}";
?>
如果這樣的算法不知道java怎麼改我也沒招了。而且你也說你只是數學爛。
相信改成java語言用來說對你很簡單的才對。
其實老祖宗很強的。有所謂的星期計算方式。(當然有搭配對應表就是了)
都說要求這個月幾號的星期幾了。總天數根本就沒差。
如果硬要求出 2/31 是星期幾我也是醉了。
每個月天數不一樣,還是需要總天數吧,
不然算一年十二個月時,怎麼知道哪個月的天數是多少
這要看題目是否容許不存在的日期規格。也就是是否容許人為操作問題。
但一般來說,給不給總天數是其次。因為就算不給。原始的問題還是不變。
畢竟每個月的天數,除了2月會因為閏年多一天外。(當年會有366天)
其於的天數都是固定天數的。給不給已經無所謂了。
除非,在不考量真正天數的情況下。如題目用2月總天數31天。
這就已經拖離了原定日期制度。只是單純用數學計算的題目。
才需要考量總天數的問題了。
所以,問題的總結在於,是否依日期計算??還是數學計算??
如果依日期,總天數根本無需提供。
如果依數學,總天數才需要提供。
用SQL玩數學題...
declare @m1 int = 4
select Sort
,(case (@m1+Sort-1) % 7 when 0 then '日' when 1 then '一' when 2 then '二' when 3 then '三' when 4 then '四' when 5 then '五' when 6 then '六'end) WeekName
from (
select Row_Number()Over(order by number) as Sort
from master..spt_values
) as k
where Sort <= 31
def calculate(a):
lists=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
return lists[(a+2)%7]
# use python3
al = ['星期四', '星期五', '星期六', '星期日', '星期一', '星期二', '星期三']
bl = al * 4 + al[0:3]
for i, element in enumerate(bl, 1):
print("第%d天 --> %s" % (i, element))
result:
第1天 --> 星期四
第2天 --> 星期五
第3天 --> 星期六
第4天 --> 星期日
...
第29天 --> 星期四
第30天 --> 星期五
第31天 --> 星期六
不一定要用數學計算啦...才31天,就 製作一個list,從星期四開始7天循環4次,再取3天補進去.
然後將此list使用enumerate(),從一開始算,印出來.
var array = ['一','二','三','四','五','六','日']
var index = null
for (let date = 0; date < 31; date++) {
if(index == null) {
index = 3
console.log(date + 1 + ' 號 , 星期 ' + array[index])
continue
}
index ++
if(index > array.length - 1) {
index = 0
}
console.log(date + 1 + ' 號 , 星期 ' + array[index])
}