Raindrop - 숫자를 문자열로 변환하기
- 번호가 3 인 경우 'Pling'을 출력하십시오.
- 숫자가 5 인 경우 'Plang'을 출력하십시오.
- 숫자가 7 인 경우 'Plong'을 출력하십시오.
- 숫자에 3, 5 또는 7이없는 경우 숫자의 자릿수를 똑바로 전달하십시오.
예제들
- 28의 요인은 1, 2, 4, 7 , 14, 28입니다.
- 빗방울 - 말로, 이것은 단순한 "플롱 (Plong)"이 될 것입니다.
- 30의 요인은 1, 2, 3 , 5 , 6, 10, 15, 30입니다.
- 빗방울 - 말로, 이것은 "PlingPlang"이 될 것입니다.
- 34는 4 가지 요소, 즉 1, 2, 17 및 34가 있습니다.
- 빗방울이 말하면, 이것은 "34"가 될 것입니다.
b
testcode
@RunWith(Parameterized::class)
class RaindropsTest(val input: Int, val expectedOutput: String) {
companion object {
@JvmStatic
@Parameterized.Parameters(name = "{index}: raindrops({0})={1}")
fun data() = listOf(
arrayOf(1, "1"),
arrayOf(3, "Pling"),
arrayOf(5, "Plang"),
arrayOf(7, "Plong"),
arrayOf(6, "Pling"),
arrayOf(8, "8"),
arrayOf(9, "Pling"),
arrayOf(10, "Plang"),
arrayOf(14, "Plong"),
arrayOf(15, "PlingPlang"),
arrayOf(21, "PlingPlong"),
arrayOf(25, "Plang"),
arrayOf(27, "Pling"),
arrayOf(35, "PlangPlong"),
arrayOf(49, "Plong"),
arrayOf(52, "52"),
arrayOf(105, "PlingPlangPlong"),
arrayOf(3125, "Plang")
)
}
@Test
fun test() {
assertEquals(expectedOutput, Raindrops.convert(input))
}
}
@RunWith(Parameterized::class)
-커스텀 러너 Parameterized
는 매개 변수화 된 테스트를 구현합니다. 매개 변수화 된 테스트 클래스를 실행할 때 테스트 메소드와 테스트 데이터 요소의 외적에 대해 인스턴스가 작성됩니다.
@Parameterized.Parameters(name = "{index}: raindrops({0})={1}")
- 테스트 클래스 생성자에 주입 할 매개 변수를 제공하는 메소드에 대한 주석
class RaindropsTest(val input: Int, val expectedOutput: String) {
클래스의 생성자가 위와 같을때
//생성자 int ({0}) 와 string{1}을 을 아래와 같이
@Parameterized.Parameters(name = "{index}: raindrops({0})={1}")
fun data() = listOf(
arrayOf(1, "1"),
arrayOf(3, "Pling"),
arrayOf(5, "Plang"),
arrayOf(7, "Plong"),
arrayOf(6, "Pling"),
arrayOf(8, "8"),
arrayOf(9, "Pling"),
arrayOf(10, "Plang"),
arrayOf(14, "Plong"),
arrayOf(15, "PlingPlang"),
arrayOf(21, "PlingPlong"),
arrayOf(25, "Plang"),
arrayOf(27, "Pling"),
arrayOf(35, "PlangPlong"),
arrayOf(49, "Plong"),
arrayOf(52, "52"),
arrayOf(105, "PlingPlangPlong"),
arrayOf(3125, "Plang")
)
1.내부 str변수에 더해주기
object Raindrops {
fun convert(input: Int): String {
var str = ""
if (input % 3 == 0)
str += "Pling"
if (input % 5 == 0)
str += "Plang"
if (input % 7 == 0)
str += "Plong"
if (str=="")
str += input.toString()
return str
}
}
str에 +=연산자로 계속하여 더해주기
2. 리턴값에 함수선언(buildString)하여 리턴
object Raindrops {
fun convert(num: Int): String = buildString {
if (num % 3 == 0) append("Pling")
if (num % 5 == 0) append("Plang")
if (num % 7 == 0) append("Plong")
if (isEmpty()) append(num)
}
}
buildString
inline fun buildString(
builderAction: StringBuilder.() -> Unit
): String
제공된 builderAction을 사용하여 새로 작성한 StringBuilder 를 채우고 String으로 변환 하여 새 문자열을 작성 합니다.
테스트결과 출력 형태
'Kotlin > Exercise' 카테고리의 다른 글
윤년 찾기 (4) | 2019.03.03 |
---|---|
Hamming -DNA 차이 (2) | 2019.03.03 |
영어에서 돼지 라틴어로 번역하기 (2) | 2019.02.24 |
Isogram인지아닌지 판단하기 (2) | 2019.02.24 |
Pangram인지 판단하기 (4) | 2019.02.23 |
댓글