Swiftでアプリ。- 作ってみよう。ループでカレンダー
1ヶ月の日数を"31日"火曜日始まり(カレンダーは日曜日始まり)。この設定でコードを書きます。
最初の条件
let days = 31
let firstDay = 2 // "0"が日曜日、 "1"が月曜日、"2"が火曜日
var w = 0 // 日曜日が"0"
while w < firstDay{
print(" ",terminator: "")
w += 1
} // 火曜日スタートなので 日曜日、月曜日は空白" "を入れる
whileループで火曜日"2"になるまで空白" "を入れます。
あとは1日から31日まで繰り返し数字を表示させていきます。
d = 1 // 日にちを入れる変数 最初の日は"1"
わかりやすいように曜日も表示させます。
print(" 日"," 月"," 火"," 水"," 木"," 金"," 土")
あとはループで1行ずつ出していきますがこのとこ1週間7日ごとに書いていくので "w < 7"までの繰り返しを行っていきます。
loop:while true{
while w < 7{
let pad = d < 10 ? " " :""
print(pad + " \(d)", terminator: "")
w += 1
d += 1
if d > days{
print()
break loop
}
}
print()
w = 0
}
1桁には空白を入れて調整します。
としてるので "w = 7"になった時点でループを抜けて
となり改行されてまた"w = 0"となり新たにループを繰り返します。
"d"は常に足されていき"31"を超えた時点で"break loop"でループを抜け終了します。
これで7日ごとに数字が出力されていきカレンダーの形になっていきます。
全コードです。
let days = 31
let firstDay = 2
var w = 0
while w < firstDay{
print(" ",terminator: "")
w += 1
}
var d = 1
print(" 日"," 月"," 火"," 水"," 木"," 金"," 土")
loop:while true{
while w < 7{
let pad = d < 10 ? " " :""
print(pad + " \(d)", terminator: "")
w += 1
d += 1
if d > days{
print()
break loop
}
}
print()
w = 0
}
実行すると
日 月 火 水 木 金 土
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
この記事が気に入ったらサポートをしてみませんか?