자바로 엘리베이터 프로그램 만들기

 학교를 가려고 하다가 엘리베이터를 타고 가는 것을 프로그램으로 만들고 싶어서 한번 만들어 보았습니다. 설명은 주석에 있으니 그것을 참고하시길!

import java.util.Scanner;
import java.util.Random;

interface num{//메소드와 변수 선언
String questions = "어디로 가실건가요?";//질문
String movingsounds = "weeeing";//움직이는 소리
String arrivedsounds = "dding! you have arrived";//도착 소리
void talking();//메소드 선언. 맨 처음 물어보는 메소드
void reputation();//층을 내려가거나 올라가는 것을 반복하는 메소드
}

public class elevator implements num{
int elevator = 0;//엘리베이터의 현재 층
int input = 0;//내가 입력한 층
int count = 0;//카운트
public static void main(String[] args) {
// TODO Auto-generated method stub
elevator e = new elevator();
e.talking();//인스턴스 생성으로 메소드 호출
}
public void talking(){
int count1 = 0;//substring 할때 사용
int count2 = 0;//이하 동일
String register ="";//substring 에서의 결과를 변환할때 사용
Random r = new Random();
Scanner s = new Scanner(System.in);//스캐너 선언
elevator = r.nextInt(60);//엘리베이터의 현재 층을 설정
System.out.println(questions+ "현재 층은 " + elevator);
String str = s.nextLine();//입력된 내용을 string 으로 변환
try {//에러 유도를 위한 try 구문
while (count < str.length()) {//층 뒤에 문자를 붙일 수 있기 때문에 length 만큼 지정
count++;//카운트를 더함. 반복문 사용 위함.
count1++;//substring 위해 배열의 길이를 구하기 위해 더함.
count2 = count1-1;//count1보다 1 작아야 한 문자만 substring 으로 빼올 수 있기 때문에 지정
if (count1 < 0) {//만약 맨 처음 0-1 을 하면 -1로 에러가 생기니 그것을 방지하기 위해 
count = 0;//count을 0으로 설정.
}
String st = str.substring(count2, count1);//대망의 substring
int test = Integer.parseInt(st);//테스트용. 자세한 내용은 아래 catch 구문에서.
register = register + st;//이것을 이용하면 반복문을 사용하는 동안 123층 이면 1-12-123순으로 쌓임.
input = Integer.parseInt(register);//이 층을 상수형으로 변환.
System.out.println(input);//테스트를 위해 출력
}
}catch(NumberFormatException e) {
//만약 사용자가 421층 ㅁㄴ으ㅏㅁㄴ 이런식으로 쓰면 에러가 나서 자동적으로 뒤의 문자가 배제되게 하는 방식.
}
reputation();//이제 층을 바꿈.
}
public void reputation(){
while (elevator < input){//만일 엘리베이터의 현재 층이 내가 입력한 층보다 낮으면
elevator++;//올라간다.
System.out.println(movingsounds);//소리
System.out.println("현재 층은: " + elevator);//현재 층 알림
}
while (elevator > input) {//만일 엘리베이터의 층이 내가 입력한 층보다 높으면
elevator--;//내려간다.
System.out.println(movingsounds);//소리
System.out.println("현재 층은: " + elevator);//현재 층 알림
}
if (elevator == input) {
System.out.println(arrivedsounds);
System.out.println("현재 층은 " + input);
}
}
}

그럼 오늘의 포스팅은 여기까지!

'JAVA' 카테고리의 다른 글

[자바] 100!값을 기존 변수형으로 계산하기  (0) 2018.10.21
자바 외전, 삼항연산자  (0) 2018.04.11
자바 세번째-반복문  (0) 2018.04.08
자브아 두번째, 변수  (0) 2018.03.25
자바 첫 시간-Hello World!  (0) 2018.02.28

+ Recent posts