開発環境
- OS X Lion - Apple(OS)
- Dart SDK (開発環境)
- Dart (プログラミング言語)
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の12章(新しいクラスのオブジェクト), 12.6(練習問題の続き)、バースデーヘルパーをDartで解いてみる。
その他参考書籍
- What is Dart? [Kindle版] (O'Reilly Media) Kathy Walrath Seth Ladd (著) このブログでの感想
バースデーヘルパー
コード
sample.dart
import 'dart:io' as io;
void main(){
var birth_dates = {},
filename = '../../birth_day_helper.txt',
file = new io.File(filename),
int_months = {'Jan': 1,
'Feb': 2,
'Mar': 3,
'Apr': 4,
'May': 5,
'Jun': 6,
'Jul': 7,
'Aug': 8,
'Sep': 9,
'Oct': 10,
'Nov': 11,
'Dec': 12};
file.readAsLines().then((List<String> lines){
for(var line in lines){
var splited_line = line.split(','),
name = splited_line[0],
month_day = splited_line[1],
year = int.parse(splited_line[2]),
splited_day_month = month_day.trim().split(new RegExp(r'\s+')),
month = int_months[splited_day_month[0].trim()],
day = int.parse(splited_day_month[1].trim());
birth_dates[name] = new DateTime(year, month, day);
}
}).then((e){
var td = new DateTime.now(),
td_year = td.year,
td_month = td.month,
td_day = td.day;
while(true){
var name = io.stdin.readLineSync();
if(name.isEmpty){
break;
}
if(birth_dates.containsKey(name)){
var birth_date = birth_dates[name],
birth_year = birth_date.year,
birth_month = birth_date.month,
birth_day = birth_date.day,
age = td_year - birth_year;
if (birth_month > td_month ||
(birth_month == td_month && birth_day > td_day)){
age -= 1;
}
print('誕生日: ${birth_year}年${birth_month}月${birth_day}日 年齢: ${age}歳');
} else {
print('${name}さんの誕生日は一覧にありません。');
}
}
}).catchError((e){
print(e);
});
}
入出力結果
Christopher Pine 誕生日: 2000年10月21日 年齢: 13歳 Christopher Plummer 誕生日: 2000年10月22日 年齢: 13歳 Christopher Lloyd 誕生日: 2000年10月23日 年齢: 12歳 dart dartさんの誕生日は一覧にありません。
0 コメント:
コメントを投稿