import java.util.Random
// mutableListOf: 수정가능한 Lits
fun main() {
var random = Random()
var list = mutableListOf<Int>()
while(list.size < 6){
val randomNumber = random.nextInt(45) + 1
if(list.contains(randomNumber)){
continue
}
list.add(randomNumber)
}
print(list)
}
2. Set 활용하여 1 ~ 45 까지 번호 가져오기
import java.util.Random
// mutableSetOf를 이용하여 중복검사 로직을 하지 않고 바로 랜덤값을 넣어준다.
fun main() {
var random = Random()
var numberSet = mutableSetOf<Int>()
while(numberSet.size < 6){
val randomNumber = random.nextInt(45) + 1
numberSet.add(randomNumber)
}
print(numberSet)
}
3. List에 미리 45번까지의 데이터를 가지고 있다가 앞에서 6번째까지 데이터 가져오기
import java.util.Random
/**
* You can edit, run, and share this code.
* play.kotlinlang.org
*/
fun main() {
var random = Random()
var list = mutableListOf<Int>().apply{
for(i in 1 .. 45){
this.add(i)
}
}
list.shuffle()
print(list.subList(0,6))
}
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// EditText타입 변수에 각 EditText의 값을 가져온다.
val heightEditText: EditText = findViewById(R.id.heightEditText)
val weightEditText = findViewById<EditText>(R.id.weightEditText)
val resultButton = findViewById<Button>(R.id.resultButton)
}
}
에러 해결 alt + enter
버튼 클릭 이벤트 처리
// 버튼 클릭 이벤트 처리
resultButton.setOnClickListener {
// 로그 찍기
Log.d("MainActivity","ResultButton 이 클릭되었습니다.")
// 비어있는 값일 경우 경고창을 띄워주고 종료
if (heightEditText.text.isEmpty() || weightEditText.text.isEmpty()) {
Toast.makeText(this,"빈 값이 있습니다.", Toast.LENGTH_SHORT).show()
/*버튼 클릭 함수를 나온다.*/
return@setOnClickListener
}
// Int형으로 변환하여 변수에 값 저장
val height:Int = heightEditText.text.toString().toInt()
val weight:Int = weightEditText.text.toString().toInt()
Log.d("MainActivity", "height : $height, weight : $weight")
// MainActivity에서 ResultActivity 호출 Intent(새로운 액티비티 전 화면, 새로 호출할 화면)
val intent = Intent(this, ResultActivity::class.java)
startActivity(intent)
}
입력후 결과를 보여줄 Activity를 생성(Result Activity.kt, activity_result.xml)
코틀린 소스파일과 layout화면 을 함께 생성한다.
아래와 같은 에러가 나온다면 manifests에 등록을 해주어야 한다.
Unable to find explicit activity class {com.example.aoppart2chapter01/com.example.aoppart2chapter01.ResultActivity}; have you declared this activity in your AndroidManifest.xml?
계속해서 코드 추가
ResultActivity.kt
package com.example.aoppart2chapter01
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import kotlin.math.pow
class ResultActivity: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_result)
// Intent로 전송한 데이터를 받는 방법 (intent 이전 화면에서의 Intent 변수명)
val height = intent.getIntExtra("height",0)
val weight = intent.getIntExtra("weight",0)
Log.d("ResultActivity", "height: $height, weight: $weight")
// pow: 제곱근 함수 사용
val bmi = weight / (height / 100.0).pow(2.0)
val resultText = when {
bmi >= 35.0 -> "고도 비만"
bmi >= 30.0 -> "중정도 비만"
bmi >= 25.0 -> "경도 비만"
bmi >= 23.0 -> "과체중"
bmi >= 18.0 -> "정상체중"
else -> "저체중"
}
// 레이아웃에 정의해둔 요소와 연결시킨다.
val resultValueTextView = findViewById<TextView>(R.id.bmiResultTextView)
val resultStringTextView = findViewById<TextView>(R.id.resultTextView)
// 연결된 요소에 데이터 입력
resultValueTextView.text = bmi.toString()
resultStringTextView.text = resultText
}
}