improve comments and readme

This commit is contained in:
2018-10-11 23:16:52 -04:00
parent e315a3c424
commit 1d882f0ae1
2 changed files with 20 additions and 1 deletions

View File

@@ -10,3 +10,20 @@ Create a program (or programs) which show how the language you picked (Kotlin) w
## Report Card Generator ## Report Card Generator
Accepts a file `sample.grades` where each line is an assignment in the format: `<course name>: <grade>`. The program iterates through the file and computes the average and letter grades for all courses listed in `sample.grades`.
Language structures used include:
* Iterable unpacking
* Implicit type arguments
* Null safety and propagation (as in `courses[course]!!.add(grade)`)
* Iteration
* Actions (as in `file.forEachLine`)
* Pattern matching (simple example using `when` expression)
Kotlin library features used include:
* File I/O
* Standard I/O
* String conversions
* Mutable maps and lists

View File

@@ -16,8 +16,10 @@ fun main(args: Array<String>) {
// This is very brittle, though, if improperly formatted // This is very brittle, though, if improperly formatted
val (rawCourse, rawGrade) = it.split(":") val (rawCourse, rawGrade) = it.split(":")
// use `trim()` to strip whitespace from either side of the strings
// string conversion is easy with helper methods like `toInt()` and `toIntOrNull()`
val course = rawCourse.trim() val course = rawCourse.trim()
val grade = rawGrade.trim().toInt() // string conversion is easy with helper methods like `toInt()` and `toIntOrNull()` val grade = rawGrade.trim().toInt()
// collection testing is easy with `in` and `!in` operators // collection testing is easy with `in` and `!in` operators
if (course !in courses) if (course !in courses)