1번
1~100까지의 임의의 숫자 맞추기
기회는 5번
맞추면 경품지급
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | package t_exm; import java.util.Scanner; /* 1~100까지의 임의의 숫자 맞추기 기회는 5번 맞추면 경품지급 */ public class T_exm01 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int ans, cnt, ran; ran=(int)(Math.random()*100)+1; while(true) { cnt=1; while(cnt<=5) { System.out.print(cnt+"번째 기회입니다. 정답을 입력하세요. : "); ans=scanner.nextInt(); if(ans==ran) { System.out.println("축하드립니다!"); break; } else if(ans>ran) { System.out.println("틀렸습니다. "+ans+"보다 작은 수 입니다."); } else { System.out.println("틀렸습니다. "+ans+"보다 더 큰 수 입니다."); } cnt++; } switch(cnt) { case 1: System.out.println(cnt+"번째 시도에 정답을 맞추셨습니다. 상품은 고급 벤츠 자동차장난감 입니다"); break; case 2: System.out.println(cnt+"번째 시도에 정답을 맞추셨습니다. 상품은 김치세탁기 입니다."); break; case 3: System.out.println(cnt+"번째 시도에 정답을 맞추셨습니다. 상품은 콩순이컴퓨터 입니다."); break; case 4: System.out.println(cnt+"번째 시도에 정답을 맞추셨습니다. 상품은 무선수도꼭지 입니다"); break; case 5: System.out.println(cnt+"번째 시도에 정답을 맞추셨습니다. 다음엔 더 잘 해보세요."); break; default: System.out.println("아쉽지만 정답은 "+ran+"입니다."); } String yn=""; System.out.print("아쉬우니 한번 더 하기 (Y키 입력) : "); yn=scanner.next(); if(!yn.equals("y")&&!yn.equals("Y")) break; } scanner.close(); } } | cs |
2번
마을버스 요금 계산기
* (나이를 입력하면 마을버스 요금을 알려주는 프로그램 만들기)
* 18세 미만은 1000원, 18세 이상은 1500원.
* 6세이하, 65세 이상은 요금이 면제된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | package t_exm; import java.util.Scanner; /* 마을버스 요금 계산기 * (나이를 입력하면 마을버스 요금을 알려주는 프로그램 만들기) * 18세 미만은 1000원, 18세 이상은 1500원. * 6세이하, 65세 이상은 요금이 면제된다. */ public class T_exm02 { public static void main(String[] args) { Scanner scanner =new Scanner(System.in); int age,bp; while(true) { System.out.print("나이를 입력하세요. : "); age=scanner.nextInt(); if(age<=6||age>=65) bp=0; else if(age<18) bp=1000; else bp=1500; if(bp==0)System.out.println("영유아와 노인은 버스요금 면제 대상입니다."); else System.out.println(age+"세의 버스요금은 "+bp+"원 입니다."); String rpt=""; System.out.print("아무키나 입력해 다시 확인하기 / exit를 입력해 시스템 종료 : "); rpt=scanner.nextLine(); if(rpt.equals("exit")||rpt.equals("EXIT"))break; else continue; } scanner.close(); } } | cs |
3번
* 6면체 주사위를 2개 굴려 두 주사위의 합이 6이나오면 작업을 종료하는 프로그램 만들기
* 단, 매번 수행되어 출력되는 결과를 화면에 나타내야함.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package t_exm; import java.util.Scanner; /* 6면체 주사위를 2개 굴려 두 주사위의 합이 6이나오면 작업을 종료하는 프로그램 만들기 * 단, 매번 수행되어 출력되는 결과를 화면에 나타내야함. */ public class T_exm03 { public static void main(String[] args) { Scanner scanner =new Scanner(System.in); int dc1,dc2,dcdc; String anykey=""; System.out.print("아무키나 입력해 주사위 굴리기"); anykey=scanner.nextLine(); while(true) { dcdc=0; while(true) { dc1=(int)(Math.random()*6)+1; dc2=(int)(Math.random()*6)+1; dcdc=dc1+dc2; System.out.println("주사위가 "+dc1+", "+dc2+" 나왔습니다. 두 주사위의 합은 "+dcdc+"입니다."); if(dcdc==6)break; } System.out.println("두 주사위의 합이 6이 나왔습니다."); System.out.print("exit를 입력해 종료하기 / 아무키나 입력해 주사위 다시 굴리기 : "); anykey=scanner.nextLine(); if(anykey.equals("exit")||anykey.equals("EXIT"))break; else continue; } scanner.close(); } } | cs |
4번
// 숫자 3개를 입력하고 3개의 숫자 중 가장 큰 수를 출력하는 프로그램 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package t_exm; import java.util.Scanner; // 숫자 3개를 입력하고 3개의 숫자 중 가장 큰 수를 출력하는 프로그램 만들기 public class T_exm04 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int num1,num2,num3; while(true) { System.out.print("첫번째 수를 입력하세요. : "); num1=scanner.nextInt(); System.out.print("두번째 수를 입력하세요. : "); num2=scanner.nextInt(); System.out.print("세번째 수를 입력하세요. : "); num3=scanner.nextInt(); int big; if(num1>=num2&&num1>=num3) { big=num1; }else if(num2>=num1&&num2>=num3) { big=num2; }else big=num3; System.out.println(num1+", "+num2+", "+num3+" 중 가장 큰 수는"+big+"입니다."); String anykey=""; System.out.print("아무 키나 눌러 다시 비교하기 / exit를 입력하고 종료하기 : "); anykey=scanner.next(); if(anykey.equals("exit")||anykey.equals("EXIT")) break; else continue; } scanner.close(); } } | cs |
5번
* 정수를 연속해서 입력받고, 입력받은 값을 누적처리하여 출력하기.
* 계산 결과가 100이 넘으면 종료하기.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package t_exm; import java.util.Scanner; /* 정수를 연속해서 입력받고, 입력받은 값을 누적처리하여 출력하기. * 계산 결과가 100이 넘으면 종료하기. */ public class T_exm05 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int su,add; while(true) { su=0; while(su<100) { System.out.print("정수를 입력하여 100이 넘을때 까지 셈하기 : "); add=scanner.nextInt(); su=su+add; System.out.println("현재 누적 값 : "+su); } System.out.println(su+"로 100을 넘어 셈이 종료되었습니다."); String anykey =""; System.out.println(); System.out.print("exit를 입력해 종료하거나 / 아무 키나 눌러 다시 셈하기"); anykey=scanner.nextLine(); ///이부분이 왜 이러는지 모르겠음 anykey=scanner.nextLine(); if(anykey.equals("exit")||anykey.equals("EXIT")) break; else continue; } scanner.close(); } } | cs |
질문) 2번, 3번, 5번 문제에서
2번 28~29번열
3번 27번열
5번 27번열에
anykey=scanner.nextLine();
if(anykey.equals("exit")||anykey.equals("EXIT")) break;
else continue;
scanner.next(); 말고 scanner.neLine();를 써서
키를 따로 입력 안하고 엔터를 쳤을때도 다시 시작되게끔 하고 싶었는데요
입력을 안했는데도 가장 처음 출력되는 문구가 나와버립니다.
그래서 같은 구문을
anykey=scanner.nextLine();
anykey=scanner.nextLine();
이런식으로 두번 넣으니 안뜨던데 이건 당연히 틀린것같고...
왜 그런지 모르겠습니다.
첫댓글 nextInt()는 숫자만을, next()는 입력된 문자들만 가져오는데, 이때 숫자(문자)입력후 엔터키를 누르면, 엔터는 제외한 문자(숫자)값만 가져오기에, 엔터키값이 버퍼에 저장되어 있지요.
그후 nextLine()명령을 쓰게 되면 이 명령어는 줄단위로 엔터키를 쳤을때까지를 읽어오는데, 앞의 버퍼내용에 엔터키값이 입력되어 있기에 nextLine()가 그 키값을 읽어오면서 바로 엔터키가 실행되어 입력을 종료하게 됩니다.
따라서 이때는 next()사용하는것이 좋을듯 하네요..
다른내용들~ 모두 좋습니다. 수고하셨어요