โ ์ฝํ๋ฆฐ ๊ฐ๋จํ๊ฒ ๋ฌธ๋ฒ ๋ฐฐ์ฐ๊ธฐ
โก ์ฝํ๋ฆฐ์์ ํจ์ ์ฌ์ฉํ๊ธฐ
ํจ์๋?
- ํน์ ์ ๋ ฅ ๊ฐ์ ๋ํ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฐํ
- ์ฝํ๋ฆฐ์์์ ํจ์๋ ์๋์ ํํ๋ก ์ฌ์ฉ
fun ํจ์์ด๋ฆ(์
๋ ฅ๊ฐ) {
ํจ์ ๋ด์ฉ
return ๋ฐํ๊ฐ
}
return ์ด ๋ฐํํ๋ค๋ ๋ป!
โก ์ฝํ๋ฆฐ์์ ์กฐ๊ฑด๋ฌธ ์ฌ์ฉํ๊ธฐ
์กฐ๊ฑด๋ฌธ์ด๋?
ํน์ ์กฐ๊ฑด์ผ ๋ ์ฝ๋๊ฐ ์คํ๋๋๋ก ์ค์ ํ๋ ๊ฒ
if(์กฐ๊ฑด๋ฌธ){
}
์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ด๋ผ๋ฉด ํด๋น {} ์์ ๋ช ๋ น์ ์คํ!
if ( n <= 10 ) {
A
} else if ( n <= 20 ) {
B
} else {
C
}
๐ ์ฝ๋ ํด์
- n์ด 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ A ์ฝ๋ ์คํ (n์ด 10 ์ดํ์ผ ๋)
- ๊ทธ๊ฒ ์๋๋ผ n์ด 20๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ B ์คํ (n์ด 10 ์ด๊ณผ 20 ์ดํ์ผ ๋)
- ๊ทธ๊ฒ ์๋๋ผ๋ฉด C ์คํ (n์ด 20 ์ด๊ณผ)
โก ์ฝํ๋ฆฐ์์ ๋ฐฐ์ด ์ฌ์ฉํ๊ธฐ
// ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋น ๋ฐฐ์ด ๋ง๋ค๊ธฐ
val numbers = arrayListOf<Int>()
// array์ ์ซ์(num) ์ถ๊ฐ
numbers.add(num)
// array์ ๋ชจ๋ ์ซ์ ์ญ์
numbers.clear()
// array ์์ ์ซ์(num)๊ฐ ์๋์ง ์๋์ง ์ฒดํฌํ๊ธฐ
numbers.contains(num) // ์์ผ๋ฉด True, ์์ผ๋ฉด False
โก ์ฝํ๋ฆฐ์์ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉํ๊ธฐ
// ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ A ๋ถ๋ถ ์คํ
while ( ์กฐ๊ฑด ) {
A
}
// ๋ฌดํ ๋ฐ๋ณต์ด๋, if ์์ ์กฐ๊ฑด์ด ์ฐธ์ผ ๊ฒฝ์ฐ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์จ๋ค.
while (true) {
if ( ์กฐ๊ฑด ) {
break
}
}
โ ํจ์๋ฅผ ์ด์ฉํ์ฌ ๋๋ค ์ซ์ ๋ฝ๊ธฐ
๐ ์ฝ๋
class MainActivity : AppCompatActivity() {
val random = Random() // ๋๋ค๊ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ์ ์ธ
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 6๊ฐ์ ๋ฒํธ ๋ณ์ ์ ์ธ
val num1 = findViewById<Button>(R.id.lottoNum1)
val num2 = findViewById<Button>(R.id.lottoNum2)
val num3 = findViewById<Button>(R.id.lottoNum3)
val num4 = findViewById<Button>(R.id.lottoNum4)
val num5 = findViewById<Button>(R.id.lottoNum5)
val num6 = findViewById<Button>(R.id.lottoNum6)
findViewById<FloatingActionButton>(R.id.runButton).setOnClickListener {
setLottoNum(num1)
setLottoNum(num2)
setLottoNum(num3)
setLottoNum(num4)
setLottoNum(num5)
setLottoNum(num6)
}
}
fun setLottoNum(lottoNum: Button) {
lottoNum.text = "${random.nextInt(45) + 1}"
lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(86, 88, 88))
}
}
๐ ๊ฒฐ๊ณผ ๋ณด๊ธฐ
โก ์ฝ๋ ํด์
1๏ธโฃ private val random = Random()
- ๋๋ค๊ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฏธ๋ฆฌ ๋ณ์ ์ ์ธ
- random.nextInt(์ซ์) ๋ก ๋๋ค ๊ฐ ๋ฐ๊ธฐ
- ex) random.nextInt(5) -> 0~4 ์ฌ์ด์ ๋ฌด์์ ์ ์ ๋ฐํ
๋ก๋ ๋ฒํธ๋ 1๋ถํฐ 45๊น์ง์ ๋๋คํ ์ ์์ด๋ฏ๋ก
random.nextInt(45) ์ฝ๋๋ก 0~44 ์ฌ์ด์ ์ ์๋ฅผ ๋ฐ์ ํ
+1 ํด์ฃผ์ด 1~45 ์ฌ์ด์ ๋๋คํ ์ซ์๋ฅผ ์ป์ ์ ์์!
2๏ธโฃ setLottoNum()
- setLottoNum ์ด๋ผ๋ ์ด๋ฆ์ ํจ์ ํธ์ถ
- ์ด๋ ๋ฐ๋์ Button ์ปดํฌ๋ํธ๋ฅผ ๊ดํธ ์์ ๋ด์์ผ ํจ
- num1 ~ num6 ์ ๋ฒํผ ์ปดํฌ๋ํธ๋ฅผ ์์ฐจ์ ์ผ๋ก ๋ด์ ํจ์ ํธ์ถ
3๏ธโฃ fun setLottoNum(lottoNum: Button) { }
- setLottoNum ์ด๋ผ๋ ์ด๋ฆ์ ํจ์ ์์ฑ
- ์ ๋ ฅ ๊ฐ : Button ์ปดํฌ๋ํธ - ์ ๋ ฅ๋ฐ์ ์ปดํฌ๋ํธ์ lottoNum์ด๋ผ๋ ์ด๋ฆ ์ค์
4๏ธโฃ lottoNum.text=”${random.nextInt(45) + 1}”
- lottoNum์ ํ ์คํธ ๊ฐ์ ${random.nextInt(45) + 1}๋ก ์ค์
- But, ํ ์คํธ ์์ฑ์๋ ์ซ์๋ฅผ ๋ฃ์ ์ ์์!
- ๋ฐ๋ผ์, ${ … } ๋ฅผ ํตํด ๋ฌธ์์ฒ๋ผ ๋ง๋ค์ด ํ ์คํธ ๊ฐ์ ์ค์
5๏ธโฃ lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(88,88,88))
- ์ ๋ ฅ๋ฐ์ ์ปดํฌ๋ํธ lottoNum์ ๋ฐฐ๊ฒฝ์์ rgb(88,88,88)๋ก ๋ฐ๊ฟ๋๋ค.
โ ๋ฌธ์ ์ ๋ฐ์!
โก ๋ฐฐ๊ฒฝ์์ด ๋ฐ๋์ง ์์
๋ก๋๋ ์ซ์์ ๋ฒ์์ ๋ฐ๋ผ ์๊น์ด ๋ฐ๋์ด์ผ ํ๋๋ฐ ๋ฐ๋์ง ์์
๐ ๋ก๋ ๋ฒํธ ์๊น
1~10์ ๋ ธ๋์,
11~20์ ํ๋์,
21~30์ ๋นจ๊ฐ์,
31~40์ ํ์,
41~45๋ ์ด๋ก์
=> ์กฐ๊ฑด๋ฌธ์ ์ด์ฉํ์ฌ ํด๊ฒฐ
โก ์ซ์๊ฐ ๊ฒน์น ์ ์์
๋ก๋ ๋ฒํธ๋ ๋ชจ๋ ๋ค๋ฅธ ์ซ์์ด๊ธฐ ๋๋ฌธ์ ์ซ์๊ฐ ๊ฒน์น๋ฉด ์๋จ
=> ๋ฐฐ์ด๊ณผ ๋ฐ๋ณต๋ฌธ์ ํตํด ํด๊ฒฐ
โ ์ค๋์ ๋ฌธ์ : ๋ก๋๋ฒํธ์ถ์ฒจ์ฑ ๊ธฐ๋ฅ ์์ฑํ๊ธฐ
์ฐ์ธก ํ๋จ์ ๋ฒํผ์ ๋๋ฅผ ๋๋ง๋ค ๋๋คํ(๊ฒน์น์ง ์๋) ์ซ์ 6๊ฐ๊ฐ ํ์๋๊ณ ,
ํด๋น ์ซ์์ ๋ง๋ ๋ฐฐ๊ฒฝ์์ผ๋ก ๋ฐ๋๋๋ก ๋ณ๊ฒฝํ๊ธฐ
๐ MainActivity.kt
package com.example.lotto
import android.content.res.ColorStateList
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import com.google.android.material.floatingactionbutton.FloatingActionButton
import kotlin.random.Random
class MainActivity : AppCompatActivity() {
private val random = Random(45) // ๋๋ค๊ฐ์ ์ฌ์ฉํ ์ ์๋๋ก ์ ์ธ
private val numbers = arrayListOf<Int>() // ๋ฒํธ๋ฅผ ์ ์ฅํ ๋ฐฐ์ด ์์ฑ
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val num1 = findViewById<Button>(R.id.lottoNum1)
val num2 = findViewById<Button>(R.id.lottoNum2)
val num3 = findViewById<Button>(R.id.lottoNum3)
val num4 = findViewById<Button>(R.id.lottoNum4)
val num5 = findViewById<Button>(R.id.lottoNum5)
val num6 = findViewById<Button>(R.id.lottoNum6)
findViewById<FloatingActionButton>(R.id.floatingActionButton).setOnClickListener {
numbers.clear() // ๋ชจ๋ ์ซ์ ์ญ์ ํ๊ณ ์์
setLottoNum(num1)
setLottoNum(num2)
setLottoNum(num3)
setLottoNum(num4)
setLottoNum(num5)
setLottoNum(num6)
}
}
private fun setLottoNum(lottoNum: Button) {
var num = 0
while (true) {
num = random.nextInt(45) + 1 // 0~44์ด๊ธฐ ๋๋ฌธ์ 1~45๋ก ๋ณ๊ฒฝ
if ( !numbers.contains(num) ) { // ๋ง์ฝ ์ด์ ์ ๋์จ ๋ฒํธ์ ๊ฒน์น์ง ์๋๋ค๋ฉด
numbers.add(num) // ๋ฒํธ ์ถ๊ฐ
break
}
}
lottoNum.text = "${num}" // ์ซ์๋ฅผ ๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๊ธฐ
if ( num <= 10 ) { // 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด
lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(255,194,0))
} else if (num <= 20) { // 10๋ณด๋ค๋ ํฌ๊ณ 20๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด
lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(0,0,255))
} else if (num <= 30) { // 20๋ณด๋ค๋ ํฌ๊ณ 30๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด
lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(245,33,34))
} else if (num <= 40 ) { // 30๋ณด๋ค๋ ํฌ๊ณ 40๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด
lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(128,128,128))
} else { // 40๋ณด๋ค๋ ํฌ๋ค๋ฉด
lottoNum.backgroundTintList = ColorStateList.valueOf(Color.rgb(129,193,71))
}
}
}
๐ ์คํ๊ฒฐ๊ณผ
https://codemate.kr/@guswlsdl04/๋ชจ๊ฐ์ฝ-์ฝํ๋ฆฐ-๊ธฐ์ดํธ-8์ผ์ฐจ โ CLICK HERE!
'๐ป Extracurricular > ์ฝ๋ฎค๋ํฐ ๋ชจ๊ฐ์ฝ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ชจ๊ฐ์ฝ < Kotlin ๊ธฐ์ดํธ > - 10์ผ์ฐจ (0) | 2022.03.09 |
---|---|
๋ชจ๊ฐ์ฝ < Kotlin ๊ธฐ์ดํธ > - 9์ผ์ฐจ (0) | 2022.03.09 |
๋ชจ๊ฐ์ฝ < Kotlin ๊ธฐ์ดํธ > - 7์ผ์ฐจ (0) | 2022.03.09 |
๋ชจ๊ฐ์ฝ < Kotlin ๊ธฐ์ดํธ > - 6์ผ์ฐจ (0) | 2022.03.09 |
๋ชจ๊ฐ์ฝ < Kotlin ๊ธฐ์ดํธ > - 5์ผ์ฐจ (0) | 2022.03.09 |