forWhile
package com.kh.silsub4.example;
import java.util.Scanner;
import java.util.regex.Pattern;
public class ForWhile {
private Scanner sc = new Scanner(System.in); //private : 필드에서 사용한 sc를 다른 곳에서 사용하지 못 하게
public void printStar1() {
/*정수 하나 입력 : 5
* 1
* *2
* **3
* ***4
* ****5
* */
System.out.print("정수 하나 입력 : ");
int row = sc.nextInt();
if(row > 0) {
for(int r = 1; r <= row; r++) {
for(int c = 1; c <= r; c++) {
if(r == c) { //줄 수와 칸이 같아지면
System.out.print(r); //줄 수를 출력
}else {
System.out.print("*"); //별을 출력
}
}
System.out.println();
}
}else {
System.out.println("양수가 아닙니다.");
}
}
public void printStar2() {
/*정수 입력 : 5
* *
* **
* ***
* ****
* *****
* ===========
* 정수 입력 : -5
* *****
* ****
* ***
* **
* *
* */
System.out.print("정수 입력 : ");
int row = sc.nextInt();
if(row > 0) {
for(int r = 1; r <= row; r++) { //r = 1 일떄
for(int c = 1; c <= r; c++) { //c는 두 번 반복
System.out.print("*");
}
System.out.println();
}
}else if(row < 0){
//for(int r = (-row); r > 0; r--){
// for(int c = 1; c <= r; c++){
for(int r = 1; r <= Math.abs(row); r++) {
for(int c = r; c < Math.abs(row); c++) { // 왜 등호를 없애야하지?
System.out.print("*");
}
System.out.println("*");
}
}else {
System.out.println("출력 기능이 없습니다.");
}
}
public void selectMenu() {
int price = 0, count = 0, sum = 0;
for(;;) {
System.out.println("*** 메뉴를 선택하세요 ***");
System.out.println("햄버거 ***************");
System.out.println("1. 불고기버거 3500원");
System.out.println("2. 치킨버거 3200원");
System.out.println("추가 ****************");
System.out.println("3. 감자튀김 1000원");
System.out.println("4. 치즈스틱 400원");
System.out.println("5. 샐러드 2000원");
System.out.println("음료수 ***************");
System.out.println("6. 콜라 700원");
System.out.println("7. 에이드 1200원");
System.out.println("8. 커피 1000원");
System.out.println("********************");
System.out.print("메뉴 선택 : ");
int menu = sc.nextInt();
switch(menu) {
case 1 : {System.out.println("불고기버거를 선택하셨습니다."); price = 3500; } break;
case 2 : {System.out.println("치킨버거를 선택하셨습니다."); price = 3200; } break;
case 3 : {System.out.println("감자튀김을 선택하셨습니다."); price = 1000; } break;
case 4 : {System.out.println("치즈스틱을 선택하셨습니다."); price = 400; } break;
case 5 : {System.out.println("샐러드를 선택하셨습니다."); price = 2000; } break;
case 6 : {System.out.println("콜라를 선택하셨습니다."); price = 700; } break;
case 7 : {System.out.println("에이드를 선택하셨습니다."); price = 1200; } break;
case 8 : {System.out.println("커피를 선택하셨습니다."); price = 1000; } break;
}
System.out.print("수량은? ");
count = sc.nextInt();
System.out.println(count + "개 주문하셨습니다.");
sum = price * count;
System.out.println();
System.out.print("추가 주문하시겠습니까?(y/n) : ");
char ch = sc.next().charAt(0);
if(ch == 'y') {
continue;
}else {
break;
}
}
System.out.println("* 주문하신 정보는 다음과 같습니다. *");
System.out.println("-----------------------------------");
System.out.println("-----------------------------------");
System.out.println("총 가격 : " + sum + "원");
}
public void countInputCharacter() {
System.out.print("문자열 입력 : ");
String str = sc.nextLine();
for(int i = 0; i < str.length(); i++) { //영문자인지 판단 0번쨰 문자부터
char temp = str.charAt(i); //문자형 변수 temp에 넣어 비교!! **
if(!((temp >= 'A' && temp <= 'Z') || (temp >= 'a' && temp <= 'z'))) {
//영문자가 아닌경우
System.out.println("영문자가 아닙니다.");
return;
}
}
System.out.print("문자 입력 : ");
char ch = sc.next().charAt(0);
int count = 0;
for(int index = 0; index < str.length(); index++) { //총 n글자 마지막 글자는 n-1번째이기 때문에 i < .length()
if(str.charAt(index) == ch) {
count++;
}
}
System.out.println("포함된 갯수 : " + count + "개");
}
}
Exercise
package com.kh.silsub3.example;
import java.util.Scanner;
public class Exercise {
Scanner sc = new Scanner(System.in);
public void exercise1() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
int sum = 0;
for(int i = 1; i <= num; i++) { //시작값은 1부터!
if(i % 2 == 0) {
sum += i;
}
}
System.out.println("1부터 " + num + "까지의 짝수의 합 : " + sum);
}
public void exercise2() {
//1번 문제 while로 변경
System.out.print("정수 입력 : ");
int num = sc.nextInt();
int sum = 0;
int i = 1; //시작값은 1부터
while(i <= num) {
if(i % 2 == 0) {
sum += i;
}
i++;
}
System.out.println("1부터 " + num + "까지의 짝수의 합 : " + sum);
}
public void exercise3() {
//1부터 입력 받은 정수까지수를 홀수와 짝수로 구분하여
//홀수면 "수", 짝수면 "짝" 반복하여 출력
System.out.print("정수 입력 : ");
int num = sc.nextInt();
String result = "";
int i = 1;
while(i <= num) {
result = (i % 2 == 0)?"박":"수";
System.out.print(result);
i++;
}
/*String str1 = "수"; //재사용성
String str2 = "박";
String result = "";
//정수 입력
for(int i = 1; i <= num; i++) {
if(i % 2 != 0) {
result += str1;
}else {
result += str2;
}
}
System.out.println(result);
*/
}
public void exercise4() {
int menu = 0, price = 0, price2 = 0, count = 0, count2 = 0, sum = 0, sum2 = 0;
String str3 = "", str4 = "";
label:
for(;;) { //do-while
System.out.println("============= Menu =============");
System.out.println("------------ 버거류 ------------");
System.out.println("1. 상하이 스파이스 치킨버거 -- 5,500원");
System.out.println("2. 빅맥 --------------- 5,000원");
System.out.println("3. 베이컨 토마토 디럭스 ----- 6,000원");
System.out.println("------------- 음료 -------------");
System.out.println("4. 콜라 --------------- 1,500원");
System.out.println("5. 사이다 -------------- 1,500원");
System.out.println("6. 오렌지 쥬스 ----------- 2,000원");
System.out.println("7. 커피 --------------- 1,000원");
System.out.println("------------ 사이드 ------------");
System.out.println("8. 감자튀김 --------------- 700원");
System.out.println("9. 아이스크림 ------------ 1,000원");
System.out.println("=================================");
System.out.print("메뉴 선택 : ");
menu = sc.nextInt();
count2++;
if(count2 >= 1) {
switch(menu) {
case 1 : {price = 5500; str3 = "상하이 스파이스 치킨버거"; } break;
case 2 : {price = 5000; str3 = "빅맥"; }break;
case 3 : {price = 6000; str3 = "베이컨 토마토 디럭스"; }break;
case 4 : {price = 1500; str3 = "콜라"; }break;
case 5 : {price = 1500; str3 = "사이다"; }break;
case 6 : {price = 2000; str3 = "오렌지 쥬스"; }break;
case 7 : {price = 1000; str3 = "커피"; }break;
case 8 : {price = 700; str3 = "감자튀김"; } break;
case 9 : {price = 1000; str3 = "아이스크림"; }break;
}
str4 = str3;
price2 = price;
}
System.out.print("주문하실 수량을 입력하세요 : ");
count = sc.nextInt();
sum = price * count;
sum2 = price2 * count;
System.out.print("추가 주문하시겠습니까?(y/n) : ");
char ch = sc.next().charAt(0);
if(ch == 'y') { //switch
count2++;
continue label;
}else {
break;
}
}
System.out.println("============================");
if(count2 >= 1) {
//for(int z = 0; z <= count; z++) {
System.out.println(str3 + "-" + count + "개 : " + sum);
System.out.println(str4 + "-" + count + "개 : " + sum2);
//}
}
System.out.println("============================");
System.out.println("total price : " + sum);
}
public void exercise4_1() {
//맥도날드 주문받기
Scanner sc = new Scanner(System.in);
String product = "";
int price = 0;
String order = ""; //오더 누적 변수
int total = 0; //누적 금액
do {
System.out.println("============= Menu =============");
System.out.println("------------ 버거류 ------------");
System.out.println("1. 상하이 스파이스 치킨버거 -- 5,500원");
System.out.println("2. 빅맥 --------------- 5,000원");
System.out.println("3. 베이컨 토마토 디럭스 ----- 6,000원");
System.out.println("------------- 음료 -------------");
System.out.println("4. 콜라 --------------- 1,500원");
System.out.println("5. 사이다 -------------- 1,500원");
System.out.println("6. 오렌지 쥬스 ----------- 2,000원");
System.out.println("7. 커피 --------------- 1,000원");
System.out.println("------------ 사이드 ------------");
System.out.println("8. 감자튀김 --------------- 700원");
System.out.println("9. 아이스크림 ------------ 1,000원");
System.out.println("=================================");
System.out.println("주문하실 메뉴를 번호로 입력하세요 : ");
int no = sc.nextInt();
System.out.println("주문하실 수량을 입력하세요 : ");
int ctn = sc.nextInt();
sc.nextLine();
System.out.println("추가 주문 하시겠습니까?(y/n) : ");
String con = sc.nextLine().toUpperCase(); //입력받은 문자를 모두 대문자로 변환
switch(no) {
case 1 : price = 5500; product = "상하이 스파이스 치킨버거"; break;
case 2 : price = 5000; product = "빅맥";break;
case 3 : price = 6000; product = "베이컨 토마토 디럭스"; break;
case 4 : price = 1500; product = "콜라"; break;
case 5 : price = 1500; product = "사이다"; break;
case 6 : price = 2000; product = "오렌지 쥬스"; break;
case 7 : price = 1000; product = "커피"; break;
case 8 : price = 700; product = "감자튀김"; break;
case 9 : price = 1000; product = "아이스크림"; break;
}
order += product + " - " + ctn + "개 : " + (price * ctn) + "원"; //*********
total += (price * ctn);
switch(con) {
case "Y" : order += "\n"; break; //다음 추가 주문 누적
case "N" : System.out.println("=======================");
System.out.println(order);
System.out.println("=======================");
System.out.println("total price : " + total + "원");
return;
}
}while(true);
}
public void exercise5() {
int random = (int)(Math.random() * 100) + 1;
int count = 1; //1로 초기화 처음 난수를 발생시켜 바로 맞춘경우 1회 맞춘 것.
for(;;) {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
if(random < num) {
System.out.println("입력하신 정수보다 작습니다.");
count++;
}else if(random > num){
System.out.println("입력하신 정수보다 큽니다.");
count++;
}else {
System.out.println("정답입니다. " + count + "회 만에 정답을 맞추셨습니다.");
break;
}
}
/*do {
System.out.print("정수 입력 : ");
int input = sc.nextInt();
}while(true);*/
}
public void exercise6() { //*****************************실기면접
//소수 판별
/* System.out.print("정수 입력 : ");
int num = sc.nextInt(); //5
if(num > 2) { //true
for(int i = 1; i <= num; i++) { //i = 1~5
int sum = num % i;
if(sum == 1 && sum == num) { //5 %
System.out.println("소수다.");
break;
}else {
System.out.println("소수가 아니다.");
break;
}
}
}else {
System.out.println("잘 못 입력하셨습니다. 다시 입력하세요.");
}
*/
do {
System.out.print("2보다 큰 정수를 하나 입력하세요 : ");
int num = new java.util.Scanner(System.in).nextInt();
boolean check = true;
if(num < 1) {
System.out.println("잘못 입력하셨습니다. 다시 입력하세요.");
}else {
for(int i = 2; i < num; i++) { //1과 자기자신을 뺀 수들 중 나누어서 떨어지는 수가 하나라도 있으면 소수가 아니다.
if(num % i == 0) {
check = false;
break;
}
}
System.out.println(check?"소수다":"소수가 아니다");
break;
}
}while(true);
}
public void exercise7() { //******************
//시저 암호
//공백 판별
//소문자 , 대문자 판별
//z보다 크면 -26 해줘서 담아준다 -> 쉬프트 /대문자도 마찬가지
System.out.print("문자열을 입력 : ");
String s = sc.nextLine();
System.out.print("문자를 얼만큼 밀지 : ");
int num = sc.nextInt();
String result = "";
int mod = num % 26; //***나머지 값 만큼 밀어주기 56인경우 -26을 해도 다시 27이므로 mod 이용
for(int i = 0; i < s.length(); i++) {
char temp = s.charAt(i);
if(temp != ' ') {
if(temp <= 'z' && temp >= 'a') { //소문자
if(temp + mod > 'z') {
result += (char)(temp + mod -26);
}else {
result += (char)(temp + mod);
}
}else { //대문자
if(temp + mod > 'Z') {
result += (char)(temp + mod -26);
}else {
result += (char)(temp + mod);
}
}
}else { //공백 문자일 경우 그대로 담아준다.
result += temp;
}
}
System.out.println(result);
}
public void exercise8() {
System.out.print("받으신 금액을 입력하세요 : ");
int money = sc.nextInt();
System.out.print("상품 가격을 입력하세요 : ");
int price = sc.nextInt();
int change = money - price;
int currency = 50000;
int mok = 0;
int nmg = 0;
int sw = 0;
int temp = change;
System.out.println("=====================");
while(true) {
mok = temp / currency;
nmg = temp % currency;
if(mok == 0 && nmg == 0) { //거스름돈 없음
break;
}
if(mok != 0) {
if(currency > 500) {
System.out.println(currency + "원권 지폐 : " + mok + "장");
}else {
System.out.println(currency + "원권 지폐 : " + mok + "개");
}
}
if(sw == 0) {
currency /= 5;
sw = 1;
}else {
currency /= 2;
sw = 0;
}
temp = nmg; //처음부터 다시 나머지 금액으로 연산할 수 있도록
}
System.out.println("=====================");
System.out.println("거슴름돈 : " + change + "원");
}
}
'JAVA > 이론 정리 및 예제' 카테고리의 다른 글
[JAVA/자바] #4_2 배열 / 예제 (0) | 2021.09.14 |
---|---|
[JAVA/자바] #4_1 배열 / 예제 (0) | 2021.09.05 |
[JAVA/자바] #3_5 실습문제2 (0) | 2021.09.05 |
[JAVA/자바] #3_4 실습문제 (0) | 2021.09.05 |
[JAVA/자바] #3_3 분기문 / 예제 (0) | 2021.09.05 |