Swiftで行こう!-ちょっと練習。
カレンダーを作ってみます。
月の日数は31日とします。
let days = 31
1日の曜日を指定します。日曜日が0で順番に数が増えて土曜日が6になります。今回は火曜日とします。日、月、火なので0,1,2ですね
let firstDay = 2
そして週を定義します。週の頭、日曜日を"0"とします。
var w = 0
火曜日が1日なので、日、月と空白を入れたいので、
while w < firstDay{
print(" ", terminator:"")
w += 1
}
要するに、"w"が0,1のときに、空白「" "」をいれます。, terminator:""は改行しないという命令です。そして、w += 1 として1づつ増やしてループします。
次に続くのが日付です。1から31までを表示させていきます。
var d = 1
として変数"d"に数字を入れて"print()"関数でコンソールに出力します。
while w < 7{ }
で一列、1週間ずつ出力します。
1から9までは一桁なので、見栄えを良くするために、数字の前に空白を入れて2桁と同じ幅にして表示するときにキレイに並ぶようにします。
let pad = d < 10 ? " " : ""
そして1から31までを1週間単位でループして表示させていきます。
print(pad + " \(d)", terminator:"")
w += 1
d += 1
7日ごとにループを抜けて、
print()
w = 0
改行してwを0に戻します。この繰り返しで0から6のk折り返しを行います。そしてdが31を超えると、
if d > days{
print()
break loop
break loop でループを抜けます。
全体のコードです。
let days = 31
let firstDay = 2
var w = 0
while w < firstDay{
print(" ", terminator:"")
w += 1
}
var d = 1
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
}
こんな感じで出力されます。
この記事が気に入ったらサポートをしてみませんか?