[1.구구단 2.음식점 3.계산기 4.종료]
1. 2단만 나오는 구구단을 설정해주세요.
1-1 : 2단이 지속적으로 출력된다. 2x1 ~ 2x9
1-2 : 구구단 2단이 끝나면 다시 처음 메뉴[1.구구단 2.음식점 3.계산기 4.종료]로 다시 빠져나간다.
1-3 : 거기서 다시 1번을 누르면 또다시 구구단 2단이 나타난다.
중
대 따로] 4.종료] 금액 본인이 설정.선택 : 2
첫 번째 숫자 : 30scanf
두 번째 숫자 : 100scanf
이런 경우;
"두 번재 숫자가 더 클 수 없습니다!!"
두 번째 숫자만 다시 입력받는다. 첫 번째 숫자보다 작을때 까지.
만약 이미 계산을 한 상태일 경우,
그 전에 계산된 금액이 나타나면서 더하거나 뺄 숫자를 입력할 수 있게 하시오.
예시 =
입력 : 3
계산기입니다.
1번 더하기 2번 빼기
선택 : 1
첫 번째 : 10
두 번째 : 20
10 + 20 = 30
[1.구구단 2.음식점 3.계산기 4.종료]
선택 : 3
1번 더하기, 2번 빼기
선택 : 1
두 번째 숫자 입력 : 50
30 + 50 = 80
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 음식 누적 값 받기 변수 지정
int menuPrice = 0;
// 음식 값을 받아주는 값
int rice1 = 0;
int noodle2 = 0;
int tangs1 = 0;
int tangm1 = 0;
int tangh1 = 0;
// 계산기 받아줄 합 변수
int numplus = 0;
while (true) {
System.out.println("메뉴를 선택해주세요");
System.out.println("1.구구단 2.음식점 3.계산기 4.종료");
int num = sc.nextInt();
if (num < 4) {
// 구구단 2단 하고 종료 후 메뉴 다시 표출
if (num == 1) {
System.out.println("구구단을 선택하셨습니다.");
int gugu = 2;
int dan = 1;
int gugudan = 0;
while (dan < 10) {
gugudan = gugu * dan;
System.out.println(gugu + "*" + dan + "=" + gugudan);
dan++;
}
}
}
//음식점
while (num == 2) {
if(rice1 == 0) {
System.out.println("중국집 포스기에 음식 값을 지정해주세요 ");
System.out.println("볶음밥 값을 입력해주세요 : ");
int rice = sc.nextInt();
rice1 += rice;
System.out.println("짜장면 값을 입력해주세요 : ");
int noodle = sc.nextInt();
noodle2 += noodle;
System.out.println("탕수육 값 지정해주세요 ");
System.out.println("탕수육 [소] 값을 입력해주세요 : ");
int tangs = sc.nextInt();
tangs1 += tangs;
System.out.println("탕수육 [중] 값을 입력해주세요 : ");
int tangm = sc.nextInt();
tangm1 += tangs;
System.out.println("탕수육 [대] 값을 입력해주세요 : ");
int tangh = sc.nextInt();
tangh1 += tangs;
}else{
System.out.println("음식을 선택해주세요");
System.out.println("1.볶음밥"+rice1+" 2.자장면"+noodle2+" 3.탕수육[소`중`대 따로] 4.종료");
int menuCh = sc.nextInt();
while(menuCh<4){
if (menuCh ==1) {
menuPrice+=rice1;
System.out.println("볶음밥을 선택 하셨습니다.");
System.out.println("볶음밥"+rice1+"추가되어 누적금액"+ menuPrice+ "원입니다.");
break;
}
if (menuCh ==2) {
menuPrice+=noodle2;
System.out.println("자장면을 선택 하셨습니다.");
System.out.println("자장면"+noodle2+"추가되어 누적금액"+ menuPrice+ "원입니다.");
break;
}
if (menuCh == 3) {
System.out.println("탕수육을 선택 하셨습니다.");
System.out.println("1.대["+tangh1+"원] 2.중["+tangm1+"원] 3.소["+tangs1+"원] 4.이전 메뉴");
int tangtang = sc.nextInt();
while(tangtang !=4){
if (tangtang==1) {
menuPrice += tangh1;
System.out.println("탕수육 대자"+tangh1+" 선택하셨습니다. 누적금액 : "+ menuPrice);
break;
}
if (tangtang==2) {
menuPrice += tangm1;
System.out.println("탕수육 중자"+tangm1+" 선택하셨습니다. 누적금액 : "+ menuPrice);
break;
}
if (tangtang==3) {
menuPrice += tangh1;
System.out.println("탕수육 소자"+tangs1+" 선택하셨습니다. 누적금액 : "+ menuPrice);
break;
}
}
if(tangtang == 4){
System.out.println("이전으로 되돌아 갑니다. ");
break;
}
}
if (menuCh==4) {
System.out.println("종료합니다.");
break;
}
}
if (menuCh==4) {
System.out.println("종료합니다.");
break;
}
}
}
//계산기
if (num == 3) {
System.out.println("계간기를 선택하셨습니다.");
System.out.println("더하기 빼기를 선탯해주세요\n" +
"1.더하기 2.빼기");
int pm = sc.nextInt();
if (numplus == 0) {
// 더하기
if(pm ==1){
System.out.println("더하기를 선택하셨습니다.");
System.out.println("더하기 빼기 하실 숫자 2개를 입력해주세요");
int c1 = sc.nextInt();
int c2 = sc.nextInt();
numplus += (c1+c2);
System.out.println(c1 +"+"+ c2 +"="+ numplus );
}
//빼기
if (pm ==2) {
System.out.println("빼기를 선택 하셨습니다.");
System.out.println("더하기 빼기 하실 숫자 2개를 입력해주세요");
int c1 = sc.nextInt();
int c2 = sc.nextInt();
while (true) {
if (c1 < c2) {
System.out.println("첫번째 숫자보다 두번째수가 더 작아야 합니다 다시 입력해주세요 : ");
c2 = sc.nextInt();
}else if (c2==c1) {
System.out.println("첫번째 숫자보다 두번째수가 더 작아야 합니다 지금 수가 같아 작동 불가 ");
break;
} else {
numplus+=(c1-c2);
System.out.println(c1 +"-"+ c2 +"="+ numplus );
break;
}
}
}
}else{
System.out.println("더하기 빼기 할 값 한개를 적어주세요");
int c2 = sc.nextInt();
if(pm ==1){
System.out.println("더하기를 선택하셨습니다.");
numplus += c2;
System.out.println(numplus +"+"+ c2 +"="+ numplus );
}
if (pm ==2) {
System.out.println("빼기를 선택 하셨습니다.");
numplus+=numplus-c2;
System.out.println(numplus +"-"+ c2 +"="+ numplus );
}
}
}
if(num == 4){
System.out.println("종료합니다.");
System.out.println("음식값 ["+menuPrice+"]"+"계산기 누적 합["+numplus+"]");
break;
}
}
}
}
문제 풀이
여기서 핵심음 음식 값이나 아니면 기존 계산기에서 누적값을 어떻게 받아서 처리 하냐인거 같았다 또 다른 하나의 핵심은 break;문을 사용하여 내가 사용 하는 무에서 빠져 나오는 타이밍이였다
1. 누적값을 만들어 누적된 값이 없으면 처음 입력 값을 받는게 핵심
2. break; 문을 사용하여 지금 진행 하는 문에 탈출을 정확하게 인지 하고 있어 야 한다.
3. while문과 if 문을 적재적소에 사용하는것도 중요하나 while문 및 if문을 사용을 최소하로 생각해야 한다는 생각으로 진행 해 주어야 한다.
문제를 풀때 if, while문을 너무 많이 남발 하여 코드가 많이 꼬였다 그래서 처음부터 큰틀을 잡을때 노트로 정리를 하고 큰틀을 잡고 그 안에 들어갈 내용들도 간단하게 손코딩하여 코드를 꼬이지 않게 작성하는게 중요 한거 같다. 나같은경우 아이패드에 노트 하면서 차근히 처음부터 풀어봐서 풀수 있었던거 같다.