일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- strip_tags #html태그제거 #PHP strip_tags
- HAVING 절
- 함수정의확인
- MySQL 날짜 관련 함수
- DATE_FORMAT()
- 영카트 #테스트메일
- DATEDIFF()
- PDO #DB접속
- php5.x
- CURDATE()
- Java환경변수 설정
- sql용어
- Now()
- explode #선택제거 #PHP explode
- Java 및 이클립스 설치
- DATE_SUB()
- serializeObject
- BufferedReader #BufferedWriter
- apt-get #apt-get 옵션 #apt-get options
- PHP달력관련함수
- SQL 중복제거
- 가상화
- 이클립스 설치
- trim #공백 제거 #PHP trim()
- CURTIME()
- db접속
- JSTL
- apt #apt 명령어 #apt-get명령어
- DATE_ADD()
- 배열관련함수
- Today
- Total
M
3장 실습문제 본문
1. 다음 프로그램에 대해 물음에 답하라
int sum=0, i=0;
while(i < 100) {
sum = sumt + i;
i += 2;
}
System.out.println(sum);
1) 무엇을 계산하는 코드이며 실행 결과 출력되는 내용은?
-> 100까지 짝수의 합계를 구하는 코드이며, 결과는 2450
2) 위의 코드를 main() 메소드로 만들고 whileTest 클래스로 완성하라.
class WhileTest {
public static void main(String[] args){
int sum=0, i=0;
while(i < 100) {
sum = sum + i;
i += 2;
}
System.out.println(sum);
}
}
3) for 문을 이용하여 동일하게 실행되는 ForTest 클래스를 작성하라.
class ForTest {
public static void main(String[] args) {
int sum = 0;
for(int i=0; i < 100; i += 2) {
sum += i;
}
System.out.println(sum);
}
}
4) do-while 문을 이용하여 동일하게 실행되는 DoWhileTest 클래스를 작성하라.
class DoWhileTest {
public static void main(String[] args) {
int sum = 0, i = 0;
do {
sum += i;
i += 2;
} while(i < 100);
System.out.println(sum);
}
}
2. 다음 2차원 배열 n을 출력하는 프로그램을 작성하라.
int n[][] = {{1}, {1,2,3}, {1}, {1,2,3,4}, {1,2}};
for(int i=0; i < n.length; i++) {
for(int j=0; j < n[i].length; j++) {
System.out.print(n[i][j] + " ");
}
System.out.println();
}
3. Scanner를 이용하여 정수를 입력받고 다음과 같이 *를 출력하는 프로그램을 작성하라, 다음은 5를 입력받았을 경우이다
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하시오>>");
int num = sc.nextInt();
/*
for(int i=num; i>0; i--) {
for(int j=0; j<i; j++) {
System.out.print("*");
}
System.out.println();
}
*/
for(int i=0; i<num; i++) {
for(int j=0; j<num - i; j++) {
System.out.print("*");
}
System.out.println();
}
4. Scanner을 이용하여 소문 알파벳을 하나 입력받고 다음과 같이 출력하는 프로그램을 작성하라. 다음은 e를 입력받았을 경우이다.
Scanner sc = new Scanner(System.in);
System.out.print("소문자 알파벳 하나를 입력하시오>>");
String s = sc.next();
char c = s.charAt(0);
final int ANUM = 'a'; // 97
for(int i = 0; i <= ((int)c - (int)ANUM); i++) {
for(int j = ANUM; j <= (int)c - i; j++) {
System.out.print((char)j);
}
System.out.println();
}
5. 양의 정수를 10개 입력받아 배열에 저장하고, 배열에 있는 경우 정수 중에서 3의 배수만 출력하는 프로그램을 작성하라.
Scanner sc = new Scanner(System.in);
int[] numArr = new int[10];
System.out.print("양의 정수 10개를 입력하시오>>");
for(int i=0; i<numArr.length; i++) {
numArr[i] = sc.nextInt();
}
System.out.print("3의 배수는");
for(int j=0; j<numArr.length; j++) {
if(numArr[j] % 3 != 0) continue;
System.out.print(" "+ numArr[j]);
}
6. 배열과 반복문을 이용하여 프로그램을 작성해보자. 키보드에서 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원군, 500원 짜리 동전, 100원짜리 동전, 50원짜리 동전, 10원짜리 동전, 1원짜리 동전이 각 몇 개로 변환되는지 예시와 같이 출력하라, 이때 반드시 다음 배열을 이용하고 반복문으로 작성하라.
Scanner sc = new Scanner(System.in);
int[] unit = {50000, 10000, 1000, 500, 100, 50, 10, 1};
System.out.print("금액을 입력하시오>>");
int money = sc.nextInt();
for(int i=0; i<unit.length; i++) {
System.out.printf("%d원 짜리 : %d개\n", unit[i], (money/unit[i]));
money = money % unit[i];
}
sc.close();
7. 정수를 10개 저장하는 배열을 만들고 1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 그리고 배열에 든 숫자들과 평균을 출력하라
int[] num = new int[10];
int sum = 0;
for(int i=0; i<num.length; i++) {
num[i] = (int)(Math.random() * 10 + 1);
}
System.out.print("랜덤한 정수들 : ");
for(int i=0; i<num.length; i++) {
System.out.print(num[i] +" ");
sum += num[i];
}
System.out.println();
System.out.printf("평균은 %.1f ", (double)(sum / num.length));
8. 정수를 몇 개 저장할지 키보드로부터 개수를 입력받아 (100보다 작은 개수) 정수 배열을 생성하고, 이곳에 1에서 100까지 범위의 정수를 랜덤하게 삽입하라. 배열에는 같은 수가 없도록 하고 배열을 출력하라.
Scanner sc = new Scanner(System.in);
System.out.print("정수 몇개?");
int n = sc.nextInt();
int[] a = new int[n];
for(int i=0; i<a.length; i++) {
int r = (int)(Math.random() * 100 + 1);
for(int j=0; j<a.length; j++) {
if(a[j] == r) break;
a[i] = r;
}
}
for(int i=0; i<a.length; i++) {
if(i != 0 && i % 10 == 0) System.out.println();
System.out.print(a[i] +" ");
}
sc.close();
9. 4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라.
int[][] n = new Int[4][4];
for(int i=0; i<n.length; i++) {
for(int j=0; j<n[i]; j++) {
n[i][j] = (int) (Math.random() * 10 + 1);
}
}
for(int i=0; i<n.length; i++) {
for(int j=0; j<n[i]; j++) {
System.out.print(n[i][j] +" ");
}
System.out.println();
}
10. 4 x 4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 10개만 랜덤하게 생성하여 임의의 위치에 삽입하라. 동일한 정수가 있어도 상관없다. 나머지 6개의 숫자는 모두 0이다. 만들어진 2차원 배열을 화면에 출력하라.
int[][] n = new Int[4][4];
int count = 0;
for(int i=0; i<n.length; i++) {
for(int j=0; j<n[i].length; j++) {
if(count >= 10) n[i][j] = 0;
int r = (int)(Math.random() * 10);
n[i][j] = r;
if(r > 0) count++;
}
}
for(int i=0; i<n.length; i++) {
for(int j=0; j<n[i].length; j++) {
System.out.print(n[i][j] +" ");
}
System.out.println();
}
11. 다음과 같이 작동하는 Average.java를 작성하라. 명령행 인자는 모두 정수만 사용되며 정수들의 평균을 출력한다. 다음 화면은 컴파일된 Average.class 파일을 c:\Temp 디렉터리에 복사한 뒤 실행한 경우이다. 원본 Average.class 파일은 이클립스의 프로젝트 폴더 밑에 bin 폴더에 있다.
int sum = 0;
for(int i=0; i<args.length; i++) {
sum += Integer.parseInt(args[i]);
}
System.out.printf("%d",sum/args.length);
}
12. 다음과 같이 작동하는 Add.java를 작성하라. 명령행 인자 중에서 정수 만을 골라 합을 구하라. 다음 화면은 Add.class 파일을 c:\Temp 디렉터리에 복사한 뒤 실행한 경우이다. 원본 Add.class 파일은 이클립스 프로젝트 폴더 밑에 bin폴더에 있다.
int sum=0;
for(int i=0; i<args.length; i++) {
try {
sum += Integer.parseInt(args[i]);
}catch(NumberFormatException e) {
continue;
}
}
System.out.println(sum);
13. 반복문을 이용하여 369게임에서 박수를 쳐야 하는 경우를 순서대로 화면에 출력해보자. 1번부터 시작하며 99까지만 한다. 실행 사례는 다음과 같다.
int first, second;
String bagsu;
for(int i = 1; i < 100; i++) {
int count = 0;
first = i / 10;
second = i % 10;
// if(second == 0 || second % 3 != 0) continue;
if(second == 3 || second == 6 || second == 9) count++;
if(first == 3 || first == 6 || first == 9) count++;
if(count == 0) continue;
bagsu =(count == 1) ? "짝" : "짝짝";
System.out.printf("%d 박수 %s \n", i, bagsu);
}
}
14. 다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.
String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"}; int score[] = {95, 88, 76, 62, 55}; |
그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다.
Scanner sc = new Scanner(System.in);
boolean isSubject = false;
String course[] = {"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
int score[] = {95, 88, 76, 62, 55};
while(true) {
System.out.print("과목 이름>>");
String str = sc.nextLine();
if(str.equals("그만") == true) break;
for(int i = 0; i < course.length; i++) {
if(course[i].equals(str) == true) {
System.out.printf("%s의 점수는 %d\n", course[i], score[i]);
isSubject = true;
break;
}
}
if(isSubject == false) {
System.out.println("없는 과목입니다.");
}
}
sc.close();
/* ---------------------------------- */
while(true) {
System.out.print("과목 이름>>");
String str = sc.nextLine();
if(str.equals("그만") == true) break;
int i = 0;
for(i = 0; i < course.length; i++) {
if(course[i].equals(str) == true) {
System.out.printf("%s의 점수는 %d\n", course[i], score[i]);
isSubject = true;
break;
}
}
if(i == course.length) {
System.out.println("없는 과목입니다.");
}
}
sc.close();
15. 다음은 2개의 정수를 입력 받아 곱을 구하는 Multiply 클래스이다.
Scanner scanner = new Scanner(System.in);
System.out.print("곱하고자 하는 두 수 입력>>");
int n = scanner.nextInt();
int m = scanner.nextInt();
System.out.print(n + "x" + m + "=" + n*m);
scanner.close();
다음과 같이 실행할 때 프로그램은 10과 5를 곱해 50을 잘 출력한다.
하지만 다음과 같이 실수를 입력하였을 때, 예외가 발생한다.
다음과 같이 실수가 입력되면 정수를 다시 입력하도록 하여 예외 없이 정상적으로 처리되도록 예외 처리 코드를 삽입하여 Multiply 클래스를 수정하라.
Scanner scanner = new Scanner(System.in);
while(true) {
try {
System.out.print("곱하고자 하는 두 수 입력>>");
int n = scanner.nextInt();
int m = scanner.nextInt();
System.out.print(n + "x" + m + "=" + n*m);
break;
} catch (InputMismatchException e) {
System.out.println("실수는 입력하면 안됩니다.");
scanner.nextLine();
}
}
scanner.close();
16. 컴퓨터와 독자 사이의 가위 바위 보 게임을 만들어보자, 예시는 다음 그림과 같다. 독자부터 먼저 시작한다. 독자가 가위 바위 보 중 하나를 입력하고 <Enter>키를 치면, 프로그램은 가위 바위 보 중에서 랜덤하게 하나를 선택하고 컴퓨터가 낸 것으로 한다. 독자가 입력한 값과 랜덤하게 선택한 값을 비교하여 누가 이겼는지 판단한다. 독자가 가위 바위 보 대신 "그만"을 입력하면 게임을 끝난다.
String[] str = {"가위", "바위", "보"};
boolean bOnLoop = true;
String user;
Scanner sc = new Scanner(System.in);
System.out.println("컴퓨터와 가위 바위 보 게임을 합니다.");
do {
int n = (int)(Math.random() * 3);
System.out.print("가위 바위 보!>>");
user = sc.next();
switch(user) {
case "가위":
if(str[n].equals("보")) {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 사용자가 이겼습니다.\n", user, str[n]);
} else if(str[n].equals("바위")) {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 컴퓨터가 이겼습니다.\n", user, str[n]);
} else {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 비겼습니다.\n", user, str[n]);
}
break;
case "바위":
if(str[n].equals("가위")) {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 사용자가 이겼습니다.\n", user, str[n]);
} else if(str[n].equals("보")) {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 컴퓨터가 이겼습니다.\n", user, str[n]);
} else {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 비겼습니다.\n", user, str[n]);
}
break;
case "보":
if(str[n].equals("주먹")) {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 사용자가 이겼습니다.\n", user, str[n]);
} else if(str[n].equals("가위")) {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 컴퓨터가 이겼습니다.\n", user, str[n]);
} else {
System.out.printf("사용자 = %s , 컴퓨터 = %s, 비겼습니다.\n", user, str[n]);
}
break;
case "그만":
bOnLoop = false;
System.out.println("게임을 종료합니다...");
break;
default:
System.out.println("가위 바위 보 중에서 입력해주세요.");
}
} while(bOnLoop);
sc.close();
'Java > 명품 Java Programming' 카테고리의 다른 글
4장 연습문제 (0) | 2022.02.07 |
---|---|
4장 Open Challenge (0) | 2022.02.06 |
3장 연습문제 (0) | 2022.01.26 |
3장 Open Challenge (0) | 2022.01.26 |
2장 상속 실습문제 (0) | 2022.01.23 |