반응형
1. readLine()
출력이 print 라면 입력을 받는 명령어
자료형 변환
! readLine()에 변환 사용 할때 주의할 점은 Null 값이 들어 왔을때 오류 없이 처리 해주기 위해 여러 표시를 해줘야함
// val num01 = readLine().trim().toInt() -> 오류 : null 일시 trim() 에서 문제가 발생함으로 ? 를 붙여 null 일경우도 처리해준다
val num01 = readLine()?.trim()?.toInt()
// ? 이랑 비슷한 기능 , !!으로 null이 아니다 라고 선언
val num02 = readLine()!!.trim().toInt()
// ( A ?: B ) 오류가 없으면 A 오류가 있으면 B 실행
val num03 = (readLine() ?: "").trim()?.toInt()
// 앞에 명령어들이 실패시 0 , 성공시 앞에 데이터를 입력
val num04 = readLine()?.trim()?.toInt() ?: 0
!! 나 ? 를 이용하거나 엘비스 연산자를 이용하여 처리해주어야 오류가 없다.
2. 배열
arrayOf 를 사용
val array = arrayOf(10,20,30)
배열 객체는 Int , Long , Char 등과 같은 기본 타입 뒤에 Array를 붙여서 생성 가능
var numbers = IntArray(10)
참고) szie 를 이용해 배열 크기를 가져올수 있음 [array.size]
전체 코드
fun main() {
println("=== readline 시작 ===")
println("숫자 : ")
// val num01 = readLine().trim().toInt() -> 오류 : null 일시 trim() 에서 문제가 발생함으로 ? 를 붙여 null 일경우도 처리해준다
val num01 = readLine()?.trim()?.toInt()
// ? 이랑 비슷한 기능 , !!으로 null이 아니다 라고 선언
val num02 = readLine()!!.trim().toInt()
// ( A ?: B ) 오류가 없으면 A 오류가 있으면 B 실행
val num03 = (readLine() ?: "").trim()?.toInt()
// 앞에 명령어들이 실패시 0 , 성공시 앞에 데이터를 입력
val num04 = readLine()?.trim()?.toInt() ?: 0
println(num01)
println(num02)
println(num03)
println(num04)
println()
println("=== 배열 시작 ===")
val array = arrayOf(10,20,30)
println(array.size)
for(i in array.indices){
array[i] = i+10
}
val number01 = Number(array[0]);
val number02 = Number(array[1]);
val number03 = Number(array[2]);
println("* 입력된 숫자")
println(number01.outputNum())
println(number02.outputNum())
println(number03.outputNum())
}
class Number(var num:Int){
fun outputNum ():Int = num
}
readLine() , class 사용 연습
fun main() {
println(" === 작업장 ====")
var person = Person()
var cnt:Int = 0
print("입장할 작업장을 선택하세요. (1~10) : ")
while(cnt==0){
val input:Int = readLine()!!.trim().toInt()
if(1<=input ){
if(10>=input){
println("${input} 작업장으로 입장합니다.")
person.id = input
cnt =1
}else{
println("입력값이 1~10 사이의 숫자인지 다시 확인하세요.")
}
}else{
println("입력값이 1~10 사이의 숫자인지 다시 확인하세요.")
}
}
print("나이를 입력하세요 : ")
var input:Int = readLine()!!.trim().toInt()
person.age = input
print("이름을 입력하세요 : ")
var inputS:String = readLine()!!.trim()
person.name = inputS
print("직업을 입력하세요 : ")
inputS = readLine()!!.trim()
person.job = inputS
cnt = 0
while(cnt==0){
print("시급을 입력하세요 : ")
val input:Int = readLine()!!.trim().toInt()
if(8720>=input ){
if(0<input){
println("${input} 원으로 합의를 마칩니다.")
println()
person.pay = input
cnt =1
}else{
println("악덕 사장이지만 시급이 0원인 건 좀 그렇다네요. 참 웃기는 일이네요 ㅎㅎ")
}
}else{
println("작업장 사장은 최저 시급 이상으로는 줄수 없다고 말합니다. '당신의 직업이 뭐든 상관 없어요. 이곳에선 사장의 말이 곧 법입니다.'")
}
}
println("입력이 완료 되었습니다. 작업을 시작합니다.")
person.Introduce()
println()
while(cnt == 1){
println("작업할 시간을 결정 하세요. !! 시간을 -99 로 설정하면 작업장을 나갑니다. !!")
input = readLine()!!.trim().toInt()
if(input == -99){
println("작업장을 나갑니다.")
if(person.totalPay < 500000){
println("그는 만족스럽지 못한 표정으로 떠납니다.")
}else if(person.totalPay < 200000){
println("그는 웃으면서 떠납니다.")
}else if(person.totalPay > 5000000){
println("그는 눈물을 흘리며 기쁜건지 슬픈건지 ... 그저 울면서 그곳을 떠납니다.")
}else{
println("그는 고개를 끄덕이며 떠납니다.")
}
break;
}else if(input > 8){
var time:Int = input
var work = Work(time, person)
work.doitNo()
println()
println("일을 마치고 울면서 휴식 시간을 가졌습니다.")
println("ㅜㅜ")
println("ㅠㅠ")
println("ㅠㅠ")
println("ㅠㅠ")
println("ㅠㅠㅠㅠ")
println("다시 작업장으로 복귀합니다.")
} else{
var time:Int = input
var work = Work(time, person)
work.doit()
println()
println("일을 마치고 휴식 시간을 가졌습니다.")
println(".")
println(".")
println(".")
println(".")
println(".")
println("다시 작업장으로 복귀합니다.")
}
}
}
class Person{
var id:Int = 0
var name:String = ""
var age:Int = 0
var job:String = ""
var pay:Int = 0
var totalPay:Int = 0
fun Introduce() {
println("${id}번 작업장에 들어온 사람은 ${age}살 ${name}씨 입니다.")
println("${job} 직업을 가졌다곤 하는데, 그런건 상관없고 시간당 ${pay}를 받습니다.")
}
}
class Work(var time:Int, var person:Person){
fun doit(){
println("${person.id} 번, ${person.age}살 ${person.name} 은(는) 작업을 무사히 마쳤다.")
println("${time}시간 일을 했고 시간당 ${person.pay}원을 받는 ${person.name}씨는 ${time * person.pay}원을 받았다.")
person.totalPay = person.totalPay+time*person.pay
println("${person.name}은(는) 총 ${person.totalPay}원을 보유하고 있다.")
}
fun doitNo(){
println("${person.id} 번, ${person.age}살 ${person.name} 은(는) 작업을 무사히 마쳤다.")
println("${time}시간 일을 했고 시간당 ${person.pay}원을 받는 ${person.name}씨는 ${time * person.pay}원을 받아야하지만.....")
println("악덕 사장이 초과근무는 인정할 수 없다면서 8시간만을 인정해주었다.. ${8*person.pay}원을 받았다....")
person.totalPay = person.totalPay+8*person.pay
println("${person.name}은(는) 총 ${person.totalPay}원을 보유하고 있다.")
}
}
반응형
'Another-Develop > kotlin' 카테고리의 다른 글
06 코틀린 - Jackson (0) | 2021.05.06 |
---|---|
05 코틀린 - init, mapOf() , toMap() (0) | 2021.04.27 |
04 코틀린 - When, downTo , .. , until (0) | 2021.04.21 |
03 코틀린 - MutableList (0) | 2021.04.20 |
01 코틀린 - 클래스, 데이터 클래스, 타입추론 , Nullable (0) | 2021.04.16 |