728x90
728x90

 

 

 

 

명품자바프로그래밍 1장 요약, 예제

명품자바프로그래밍 2장 요약, 예제

명품자바프로그래밍 3장 요약, 예제

명품자바프로그래밍 3장 연습문제

 

 


 

 

명품자바프로그래밍 3장 실습문제

 

반복문과 배열 그리고 예외 처리

 

1. 다음 프로그램에 대해 물음에 답하라. #명품자바프로그래밍3장1번실습문제

int sum=0, i=0; 

while (i<100){
   sum=sum+i;
   i+=2;
}

System.out.println(sum);

 

(1) 무엇을 계산하는 코드이며 실행 결과 출력되는 내용은?

100보다 작은 짝수의 합. 2450

(2) 위의 코드를 main()메소드로 만들고 WhileTest 클래스로 완성하라.

package Luxuryjava03;

public 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 클래스를 작성하라.

package Luxuryjava03;

public class ForTest {

	public static void main(String[] args) {
    
		int sum=0, i=0;
        
		for(i=0; i<100; i+=2) {
			sum=sum+i;
		}
        
		System.out.println(sum);
	}
}

 

(4) do-while 문을 이용하여 동일하게 실행되는 DowhileTest 클래스를 작성하라.

package Luxuryjava03;

public class DowhileTest {

	public static void main(String[] args) {
    
		int sum=0, i=0;
        
		do{
			sum=sum+i;
			i+=2;
            
		}while(i<100);
        
		System.out.println(sum);
	}
}

 

 

 

 

2. 다음 2차원 배열 n을 출력하는 프로그램을 작성하라. #명품자바프로그래밍3장2번실습문제

int n[][] = {{1}, {1,2,3}, {1}, {1,2,3,4}, {1,2}} ;
1
1 2 3
1
1 2 3 4
1 2

※ 1*5 배열. n.length : 줄의 개수, n[i].length : i번째 줄의 배열 갯수
※ length() : 문자의 길이 / length : 배열의 길이

package Luxuryjava03;
public class h0302 {
	public static void main(String[] args) {
		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();
	   }
    }
}

 

 

※ 각 행별의 평균을 구하려면?

 

package Luxuryjava03;

public class h0302 {

	public static void main(String[] args) {
		int n[][] = { { 1 }, { 1, 2, 3 }, { 1 }, { 1, 2, 3, 4 }, { 1, 2 } };
		for (int i = 0; i < n.length; i++) {
			int sum = 0;

			for (int j = 0; j < n[i].length; j++) {
				System.out.print(n[i][j] + "\t");
				sum += n[i][j];
			}
			System.out.println((double) sum / n[i].length);
		}
	}
}

 

 

 

 

3. Scanner를 이용하여 정수를 입력받고 다음과 같이 *를 출력하는 프로그램을 작성하라. 다음은 5를 입력받았을 경우이다. #명품자바프로그래밍3장3번실습문제 #자바별찍기 #자바역삼각형만들기

정수를 입력하시오 >> 5

*****
****
***
**
*

 

※ for문, 변수 2개

package Luxuryjava03;
import java.util.Scanner;

public class h0303 {
	public static void main(String[] args) {
		System.out.println("정수를 입력하시오>>");
        Scanner s=new Scanner(System.in);
		int n=s.nextInt();

	for(int i=0; i<n; i++) {
		for(int j=0; j<n-i; j++) {     
			System.out.print("*");
		}
		System.out.println();
	}
	s.close();
	}
}

 

※ 응용 - 반대로 별을 찍을 때

package Luxuryjava03;
import java.util.Scanner;
public class h0303 {
	public static void main(String[] args) {
		System.out.print("정수를 입력하시오>>");
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();
		for(int i=0; i<n; i++) {
			for(int j=0; j<=i; j++) {
					System.out.print('*');
			}
			System.out.println();
		}
	s.close();
	}
}

 

 

※ 응용 - 자바 피라미드 그리기 #자바피라미드찍기

 

package Luxuryjava03;
import java.util.Scanner;
public class h0303 {
	public static void main(String[] args) {
		System.out.print("정수를 입력하시오>>");
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();

		for(int i=0; i<n; i++) {
			for(int j=1; j<n-i; j++) {
					System.out.print(" ");
			}
			for(int k=0; k<i*2+1; k++) {
				System.out.print("*");
			}
			System.out.println();
		}
	s.close();
	}
}
package Luxuryjava03;
import java.util.Scanner;
public class h03032 {
	public static void main(String[] args) {
		System.out.print("정수를 입력하시오>>");
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();
     	System.out.println();

        for (int i=0; i<n; i++) {   // i=0,1,2,3,4
          for (int j=n-1; j>i; j--) { 
                   // i=0 j=4,3,2,1 / i=1 j=4,3,2 / i=2 j=4,3 / i=3 j=4 / i=4 (i=j 므로 제외)
                   // j는 4부터 시작하여 i보다 클때까지 - 
            System.out.print(" ");
        }
          for (int k = 1; k <= i*2+1; k++) {  //k는 1부터 시작
            System.out.print("*"); //  i 가  0 -->0*2+1 1 1  =         1 
                                    // i 가 1 -->1*2+1  3 3 <=       1,2,3
                                    // i 가 2 -->2*2+1  5 5 <=     1,2,3,4,5
                                    // i 가 3 -->3*2+1  7 7 <=   1,2,3,4,5,6,7
                                    // i 가 4 -->4*2+1  9 9 <= 1,2,3,4,5,6,7,8,9                    
          }
        System.out.println();
    } 
package Luxuryjava03;
import java.util.Scanner;
public class  h03032 {
	public static void main(String[] args) {
		System.out.print("정수를 입력하시오>>");
		Scanner s=new Scanner(System.in);
		int n=s.nextInt();
     	System.out.println();
 
   for(int i=0; i<n; i++){     // 0, 1, 2, 3, 4
     	for(int j=1; j<n-i; j++){      // i=0 2<
            System.out.print(" ");
     	}
		for(int k=0; k<i*2+1; k++){    // +1: 홀수. 홀수여야 양쪽 동일.
			System.out.print("*");
		}
		System.out.println(" ");
	}
	s.close();
	}
}

 

※ 응용 - 자바 역피라미드 그리기 #자바역피라미드만들기 #자바역삼각형찍기

https://dpdpwl.tistory.com/5 참고하기

※ 응용 - 자바 다이아몬드 그리기 #자바다이아몬드찍기 #자바다이아몬드만들기

 

 

 

4. Scanner를 이용하여 소문자 알파벳을 하나 입력받고 다음과 같이 출력하는 프로그램을 작성하라. 다음은 e를 입력받았을 경우이다.

소문자 알파벳 하나를 입력하시오 >> e

abcde
abcd
abc
ab
a

※ Scanner는 문자를 입력받는 기능이 없으므로 문자열을 입력받아야 한다.
String s=scanner.next(); ----문자열 읽기 char c=s.charAt(0); -------문자열의 첫 번째 문자

 

 

 

5. 양의 정수 10개 입력받아 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력하는 프로그램을 작성하라. 

 

 

 

 

 

6. 배열과 반목문을 이용하여 프로그램을 작성해보자. 키보드에서 정수로 된 돈의 액수를 입력받아 오만 원권, 만 원권, 천 원 권, 500원, 100원, 50원, 10원, 1원짜리 동전이 각 몇 개로 변환되는지 예시와 같이 출력하라. 이 때 반드시 다음 배열을 이용하고 반복문으로 작성하라.

int []unit={50000, 10000, ....}; 

 

 

 

 

7. 정수를 10개 저장하는 배열을 만들고 1에서 10까지 범위의 정수를 랜덤하게 생성하여 배열에 저장하라. 그리고 배열에 든 숫자들과 평균을 출력하라. #명품자바3장7번실습문제

int i = (int)(Math.random()*10+1);

 

 

8. 정수를 몇 개 저장할 지 키보드로부터 100보다 작은 갯수를 입력받아 정수 배열을 생성하고, 이곳에 1에서 100까지 범위의 정수를 랜덤하게 삽입하라. 배열에는 같은 수가 없도록 하여 배열을 출력하라. #명품자바3장8번실습문제

정수 몇 개 ?  24
48 33 74 94 17 39 55 8 59 81
... (랜덤한 정수가 24개 출력)

 

 

 

9. 4x4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 랜덤하게 생성하여 정수 16개를 배열에 저장하고, 2차원 배열을 화면에 출력하라. #명품자바3장9번실습문제

6     10      1     8

1      3      7     2

8      4      5     1

1      8      4     4

 

 

 

10. 4x4의 2차원 배열을 만들고 이곳에 1에서 10까지 범위의 정수를 10개만 랜덤하게 생성하여 임의의 위치에 삽입하라. 동일한 정수가 있어도 상관없다. 나머지 6개의 숫자는 모두 0이다. 만들어진 2차원 배열을 화면에 출력하라. #명품자바3장10번실습문제

5     0     8     6

0     7     9     5

2     4     0     8

0     0     0     8

 

 

 

11. 다음과 같이 작동하는 Average.java를 작성하라. 명령행 인자는 모두 정수만 사용되며 정수들의 평균을 출력한다. 다음 화면은 컴파일된 Average.class파일을 c:\Temp 디렉토리에 복사한 뒤 실행한 경우이다. 원본 Average.class파일은 이클립스의 프로젝트 폴더 밑 bin폴더에 있다. 

C: \Temp>java Average 2 3 4

3   ------- 2 3 4의 평균

C :\Temp>

 

 

 

12. 다음과 같이 작동하는 Add.java를 작성하라. 명령행 인자 중에서 정수만을 골라 합을 구하라. 다음 화면은 명령프롬프트에서 Add.class파일을 c:\Temp 디렉토리에 복사한 뒤 실행한 경우이다. 원본 Add.class파일은 이클립스 폴더 밑 bin폴더에 있다.

C: \Temp>java Add 2 3 aa 5 6.5  ---- 이 중 정수만 더하여 출력
10
C :\Temp>java Add Heaven 3 4 4.3 c
7
C :\Temp>


※ 문자열을 정수로 변환할 때 다음 코드를 이용하라.

int i = Integer.parseInt("10");   // i는 10

 

 

 

13. 반복문을 이용하여 369게임에서 박수를 쳐야 하는 경우를 순서대로 화면에 출력해보자. 1부터 시작하며 99까지만 한다. 

 

 

 

14. 다음 코드와 같이 과목과 점수가 짝을 이루도록 2개의 배열을 작성하라.

String course[]={"Java", "C++", "HTML5", "컴퓨터구조", "안드로이드"};
int course[]={95, 88, 76, 62, 55};

그리고 다음 예시와 같이 과목 이름을 입력받아 점수를 출력하는 프로그램을 작성하라. "그만"을 입력받으면 종료한다. ※ 문자열을 비교하기 위해서는 String 클래스의 equals()메소드를 이용해야 한다.

과목 이름 >>  Jaba
없는 과목입니다.

과목 이름 >>  Java
Java의 점수는 95

과목 이름 >>  C++
C++의 점수는 88

과목 이름 >>  그만

 

 

 

15. 다음은 2개 정수를 입력받아 곱을 구하는 Multiply 클래스이다.

import java.util.Scanner;
public class Multiply{
  public static void main(String[]args){
  Scanner scanner=new Scanner(System.in);
  int n=scanner.nextInt();
  int m=scanner.nextInt();
  System.out.print(n+"x"+m+"="+n*m);
  scanner.close();
  }
}

다음과 같이 실행할 때 프로그램은 10과 5를 곱해 50을 잘 출력한다. 하지만 실수를 입력하면 예외가 발생하는데, 실수가 입력되면 정수를 다시 입력하도록 하여 예외 없이 정상적으로 처리되도록 예외 처리 코드를 삽입하여 Multiply 클래스를 수정하라.

곱하고자 하는 두 수 입력 >> 10 5
10x5=50

※ InputMismatchException 예외를 처리할 try-catch 코드를 작성하고, catch 블록에서 Scanner에 이미 입력된 키를 모두 제거하기 위해 Scanner의 nextLine()을 호출하라.

곱하고자 하는 두 수 입력 >> 2.5 4
실수는 입력하면 안됩니다.

곱하고자 하는 두 수 입력 >> 4  3
4x3=12

 

 

 

16. 컴퓨터와 독자 사이의 가위바위보 게임을 만들어보자. 예시는 다음 그림과 같다. 독자부터 먼저 시작하여 가위 바위 보 중 하나를 입력하고 <Enter>키를 치면, 프로그램은 가위 바위 보 중에서 랜덤하게 하나를 선택하고 컴퓨터가 낸 것으로 한다. 독자가 입력한 값과 랜덤하게 선택한 값을 비교하여 누가 이겼는지 판단한다. 독자가 가위 바위 보 대신 "그만"을 입력하면 게임Over.

컴퓨터와 가위 바위 보 게임을 합니다.

가위 바위 보! >> 바위
사용자 = 바위, 컴퓨터 = 가위, 사용자가 이겼습니다

가위 바위 보! >> 그만
게임을 종료합니다...

※ 랜덤숫자 함수 : Math.random()
※ 비교 : str[n].equals()

 

 

 

 

728x90
728x90
블로그 이미지

coding-restaurant

코딩 맛집에 방문해주셔서 감사합니다.

,

v