자판기를 만드는 마지막 강의로, 순서도와 이용하여 코드 구현체를 만드는 강의입니다. 지금까지의 강의를 자기것으로 만들었다면 충분히 코드 구현체를 만들 수 있습니다. 마지막까지 힘내봅시다!
안녕하세요 코드라떼님! 좋은 강의 감사드립니다 :) 음료 구매 후 잔액이 0원이 되면 "돈을 투입해 주세요" 스테이지부터 시작하고 싶어서 아래처럼 변경해보았습니다. 기존 if문>while문 이후 코드를 else if 안에 복사/붙여넣기만 한 것이라 중복을 피하고 싶어 더 좋은 방법을 찾고 있는데 어렵네요ㅠ 혹시 힌트라도 주실 수 있으실까요? -변경 전- if (beverageCost[selectedBeverage] > money) { System.out.println("금액이 부족합니다"); } -변경 후- if (beverageCost[selectedBeverage] > money) { System.out.println("금액이 부족합니다"); } else if (beverageCost[selectedBeverage] == money) { money = money - beverageCost[selectedBeverage]; beverageStock[selectedBeverage] = beverageStock[selectedBeverage] - 1; System.out.printf("%s 음료를 구매했습니다.\n", beveragesNames[selectedBeverage]); System.out.printf("남은 금액은 %d 입니다.", money); }
안녕하세요. 코드라떼입니다 :) 코드를 작성하기에 앞서 순서도로 생각을 정리해보시는 것이 좋을 것 같습니다. 생각이 정리되어 순서도로 표현이 되면 단순하게 코드만 작성하면 됩니다 :) 올려주신 '변경 후' 코드를 보면 로직보다 생각 정리가 필요한 것으로 보입니다. else if (beverageCost[selectedBeverage] == money) 해당 코드 이후에 money = money - beverageCost[selectedBeverage]; 코드가 작성되어 있는 것을 봤을 때, 코드 문제가 아니라고 판단되기 때문입니다. 먼저 생각을 정리해 보시고, 순서도를 작성해 보세요. 감사합니다 :)
음료를 선택할 때 0,1,2가 아닌 다른 수를 입력할 때 음료가 존재하지 않습니다.를 출력하고 다시 음료를 선택하는 반복문으로 돌아가려면 어떻게 해야하나요?
안녕하세요. 코드라떼입니다 :) 여러 가지 방법이 있을 수 있으나, 간단한 방법 중 하나는 0, 1, 2가 아닌 다른 수를 입력 했을 경우는 정상적인 수가 아니므로 음료를 선택하라는 문구와 다시 입력받는 부분이 반복되어야 합니다. 어디서부터 어디까지 반복되어야할 지 범위가 확인된다면 아래와 같이 코드를 작성할 수 있습니다. 반복되어야 하는 부분을 반복문으로 감싼 후, 특정조건이 되면 break 키워드를 호출하여 반복문을 벗어나는 방법을 택할 수 있습니다. -변경 전- do { System.out.println("음료를 선택해주세요."); selectedBeverage = scanner.nextInt(); if (beverageStock[selectedBeverage] <= 0) { System.out.printf("%s 음료가 존재하지 않습니다. 다른 음료를 선택해주세요.\n", beverageNames[selectedBeverage]); } } while (beverageStock[selectedBeverage] <= 0); -변경 후- do { while (true) { System.out.println("음료를 선택해주세요."); selectedBeverage = scanner.nextInt(); if (selectedBeverage < 2) { break; } System.out.println("존재하지 않는 음료입니다."); } if (beverageStock[selectedBeverage] <= 0) { System.out.printf("%s 음료가 존재하지 않습니다. 다른 음료를 선택해주세요.\n", beverageNames[selectedBeverage]); } } while (beverageStock[selectedBeverage] <= 0); 감사합니다 :)
실습도구 9번라인에서 beverageStock을 final로 선언했는데 40번라인에서 값변경이 어떻게 가능한건가요? final은 값 변경이 불가능하게 하는거 아니였나요?
안녕하세요. 코드라떼입니다 :) final int[] beverageStock = {4, 3, 2}; 해당 코드를 말씀하신 것으로 보입니다. final로 선언된 변수는 변수의 값이 지정되면 그 이후에 값 변경이 불가능한 것이 맞습니다. 다만 여기서 헷갈리지 말아야 할 부분은 int[]에 저장되는 값은 배열의 값이 아니라 '배열의 값을 저장하고 있는 공간'의 참조값입니다. 그러므로 '배열 공간에 저장되는 값'과 '배열 공간의 위치값'을 저장하는 변수와 분리해서 생각해야 합니다. ps. 참조값에 대한 부분은 '[심화] 배열과 메모리'에서 확인하실 수 있습니다. 감사합니다.
Code Run을 통해 코드를 실행해보세요. root$에 입력을 하여 자판기에게 명령을 내려보세요.
자판기를 만드는 마지막 강의로, 순서도와 이용하여 코드 구현체를 만드는 강의입니다. 지금까지의 강의를 자기것으로 만들었다면 충분히 코드 구현체를 만들 수 있습니다. 마지막까지 힘내봅시다!
안녕하세요 코드라떼님! 좋은 강의 감사드립니다 :) 음료 구매 후 잔액이 0원이 되면 "돈을 투입해 주세요" 스테이지부터 시작하고 싶어서 아래처럼 변경해보았습니다. 기존 if문>while문 이후 코드를 else if 안에 복사/붙여넣기만 한 것이라 중복을 피하고 싶어 더 좋은 방법을 찾고 있는데 어렵네요ㅠ 혹시 힌트라도 주실 수 있으실까요? -변경 전- if (beverageCost[selectedBeverage] > money) { System.out.println("금액이 부족합니다"); } -변경 후- if (beverageCost[selectedBeverage] > money) { System.out.println("금액이 부족합니다"); } else if (beverageCost[selectedBeverage] == money) { money = money - beverageCost[selectedBeverage]; beverageStock[selectedBeverage] = beverageStock[selectedBeverage] - 1; System.out.printf("%s 음료를 구매했습니다.\n", beveragesNames[selectedBeverage]); System.out.printf("남은 금액은 %d 입니다.", money); }
안녕하세요. 코드라떼입니다 :) 코드를 작성하기에 앞서 순서도로 생각을 정리해보시는 것이 좋을 것 같습니다. 생각이 정리되어 순서도로 표현이 되면 단순하게 코드만 작성하면 됩니다 :) 올려주신 '변경 후' 코드를 보면 로직보다 생각 정리가 필요한 것으로 보입니다. else if (beverageCost[selectedBeverage] == money) 해당 코드 이후에 money = money - beverageCost[selectedBeverage]; 코드가 작성되어 있는 것을 봤을 때, 코드 문제가 아니라고 판단되기 때문입니다. 먼저 생각을 정리해 보시고, 순서도를 작성해 보세요. 감사합니다 :)
음료를 선택할 때 0,1,2가 아닌 다른 수를 입력할 때 음료가 존재하지 않습니다.를 출력하고 다시 음료를 선택하는 반복문으로 돌아가려면 어떻게 해야하나요?
안녕하세요. 코드라떼입니다 :) 여러 가지 방법이 있을 수 있으나, 간단한 방법 중 하나는 0, 1, 2가 아닌 다른 수를 입력 했을 경우는 정상적인 수가 아니므로 음료를 선택하라는 문구와 다시 입력받는 부분이 반복되어야 합니다. 어디서부터 어디까지 반복되어야할 지 범위가 확인된다면 아래와 같이 코드를 작성할 수 있습니다. 반복되어야 하는 부분을 반복문으로 감싼 후, 특정조건이 되면 break 키워드를 호출하여 반복문을 벗어나는 방법을 택할 수 있습니다. -변경 전- do { System.out.println("음료를 선택해주세요."); selectedBeverage = scanner.nextInt(); if (beverageStock[selectedBeverage] <= 0) { System.out.printf("%s 음료가 존재하지 않습니다. 다른 음료를 선택해주세요.\n", beverageNames[selectedBeverage]); } } while (beverageStock[selectedBeverage] <= 0); -변경 후- do { while (true) { System.out.println("음료를 선택해주세요."); selectedBeverage = scanner.nextInt(); if (selectedBeverage < 2) { break; } System.out.println("존재하지 않는 음료입니다."); } if (beverageStock[selectedBeverage] <= 0) { System.out.printf("%s 음료가 존재하지 않습니다. 다른 음료를 선택해주세요.\n", beverageNames[selectedBeverage]); } } while (beverageStock[selectedBeverage] <= 0); 감사합니다 :)
실습도구 9번라인에서 beverageStock을 final로 선언했는데 40번라인에서 값변경이 어떻게 가능한건가요? final은 값 변경이 불가능하게 하는거 아니였나요?
안녕하세요. 코드라떼입니다 :) final int[] beverageStock = {4, 3, 2}; 해당 코드를 말씀하신 것으로 보입니다. final로 선언된 변수는 변수의 값이 지정되면 그 이후에 값 변경이 불가능한 것이 맞습니다. 다만 여기서 헷갈리지 말아야 할 부분은 int[]에 저장되는 값은 배열의 값이 아니라 '배열의 값을 저장하고 있는 공간'의 참조값입니다. 그러므로 '배열 공간에 저장되는 값'과 '배열 공간의 위치값'을 저장하는 변수와 분리해서 생각해야 합니다. ps. 참조값에 대한 부분은 '[심화] 배열과 메모리'에서 확인하실 수 있습니다. 감사합니다.
Code Run을 통해 코드를 실행해보세요. root$에 입력을 하여 자판기에게 명령을 내려보세요.