본문 바로가기
Programming/JAVA

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

by 안녕주 2020. 9. 8.

명품자바프로그래밍 Chapter3_Lab02

실습2 |  다음 2차원 배열 n을 출력하는 프로그램 작성

public class Print2DArray {

	public static void main(String[] args) {
		int n[][] = {{1},{1,2,3},{1},{1,2,3,4},{1,2}}; //주어진 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(); // 한개의 행을 출력할 때 마다 띄어쓰기
		}
	}

}

 

실습4 | Scanner를 이용하여 소문자 알파벳을 하나 입력 받고 출력하기

import java.util.Scanner;

public class PrintAlphabet {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		System.out.print("소문자 알파벳 하나를 입력하시오 >> ");
		String n = scanner.next(); //문자열 읽기
		char c = n.charAt(0); //문자열의 첫 번째 문자 가져오기(Scanner는 문자를 입력받는 기능이 없다)
		
		for (int i =0;i<=c-'a';i++) { //입력받은 문자의 해당 알파벳 숫자만큼 반복 (char c가 c면 3번/i=0,1,2/3개의 줄로 출력할것이다)
			for (char s ='a'; s<=c-i; s++) { //문자자체의 출력, 처음에는 입력받은 알파벳까지 출력하고 i++되면 a부터 입력받은 알파벳-1번째까지 하나하나 출력
				System.out.print(s);			
			}
			System.out.println(); // 문자가 한줄씩 완석될 때 마다 띄어쓰기
		}
		scanner.close();
	}

}

 

실습6 |  잔돈 치르기

import java.util.Scanner;

public class ChangeMoney {

	public static void main(String[] args) {
		int [] unit = {50000,10000,1000,500,100,50,10,1};//환산할 돈의 종류
		Scanner scan = new Scanner(System.in);
		System.out.print("금액을 입력하시오>> ");
		int coin = scan.nextInt(); //정수 입력
		
		for(int i=0;i<unit.length;i++) { //돈 종류만큼 반복(8번)
			int money = coin / unit[i]; //money는 unit[i]으로 나눈 몫부분  
			coin %= unit[i] ; //coin에는 다음 반복문에 사용할 나머지 부분
			if (money!=0)
				System.out.println(unit[i]+"원 짜리 : "+money+"개");
		}	
		scan.close();
	}

}

 

실습8 | 정수를 입력받아 배열을 만든 후, 1~100까지의 정수를 랜덤으로 삽입!

import java.util.Scanner;

public class RandomArray {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); //스캐너 객체 생성
		System.out.print("정수 몇개? "); //사용자로부터 입력을 받기 위한 출력문
		int n = scan.nextInt(); // 스캐너를 통한 입력값 저장
		
		if (n>=100) { //입력받은 값의 유효성 체크(100보다 작은수 입력 받기)
			System.out.print("100보다 작은 정수를 입력해주세요: ");
			n = scan.nextInt();
		}
		
		int Array[] = new int[n]; //입력받은 값의 크기만큼 정수 배열 생성
		 
		for(int i = 1;i<=n;i++) { //배열의 크기만큼 반복 (3개면 3번 i=1,2,3)
			int r = (int)(Math.random()*100 + 1); //난수 생성(1~100)
			
			for(int j =0;j<i;j++) { // 배열에 정수 저장 (무조건 한번은 돌아갈 수 있도록 j=0 초기화 )
				
				if (r == Array[j]) { //난수가 배열에 이미 있으면 
					i--; //다시 한번더 반복
					break; //아래의 if문을 실행하지 않고 안쪽 for문 탈출
				}

				if (i-1 == j) {//값을 저장할 곳이 비어있으면 (해당번째에 저장해야할 인덱스를 찾는다. 2번째 큰 반복문이 돌 때 인덱스번호 1번자리에 정수 저장해야함)
					Array[j] = r;
					System.out.print(Array[j]+" "); //저장했으면 print
					if (i%10==0) //정수를 10개단위로 끊어서 띄어쓰기 
						System.out.println();
				}
			}
		}
		scan.close(); //스캐너 종료
	}

}

 

실습10 | 4x4의 2차원 배열을 만들고 1~10까지의 정수를 10개만 생성해 랜덤으로 삽입!

public class twoDArray {

	public static void main(String[] args) {
		int Array[][] = new int[4][4]; //4x4 2차원 배열 생성
		
		for(int i =0;i<4;i++) {
			for(int j=0;j<4;j++) 
				Array[i][j] = 0; //배열의 모든 원소를 0으로 초기화
		}
		
		for(int i =0;i<10;i++) { //반복문 돌면서 10개만 랜덤 정수 생성
			int r = (int)(Math.random()*10 + 1); //(1~10)
			
			int row = (int)(Math.random()*4); //행 인덱스 랜덤생성(0~3)
			int col = (int)(Math.random()*4); //열 인덱스 랜덤생성 (0~3)
				 
			if(Array[row][col] != 0) {//배열의 원소가 0이 아니면 다시 한번 반복 
				i--;
			}
			if(Array[row][col] == 0) { //해당위치의 원소가 0이라면 랜덤 숫자 저장
				Array[row][col] = r;
			}
		}
		
		for(int i=0;i<4;i++) { //차원 배열 출력
			for(int j =0;j<4;j++)
				System.out.print(Array[i][j]+"\t");
			System.out.println();
		}
	}
}

 

실습14 | 과목과 점수가 짝을 이루도록 출력

import java.util.Scanner;

public class ScoreArray {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String course[] = {"Java","C++","HTML5","컴퓨터구조","안드로이드"};
		int score[] = {95,88,76,62,55};
		
		while (true) { //break가 나올때 까지 무한루프
			System.out.print("과목 이름>> ");
			String name = scan.next(); //사용자가 입력한 과목명
			
			if (name.equals("그만")) //그만을 입력했을 때 종료
				break;
			
			for(int i =0; i<5;i++) { //과목의 개수가 5개이므로 5번 반복
				if(course[i].equals(name)) { //과목명이 course[i]의 문자열과 같은 경우
					int n = score[i]; //책에 나온 힌트 코드라서 사용했지만 없어도 될듯
					System.out.println(course[i]+"의 점수는 "+ n); 
					break; //아래의 if문을 실행 안하려면 찾았을 때 break로 탈출
				}
				if (i==4) //과목을 다 비교했는 데도 없을 경우(jaba)
					System.out.println("없는 과목입니다.");
			}
		}
		scan.close(); //스캐너 종료
	}
}

 

실습16 | 컴퓨터와 가위바위보 게임

import java.util.Scanner;

public class GBBWithComputer {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		String str[] = {"가위","바위","보"}; //문자열 배열
		
		System.out.println("컴퓨터과 가위 바위 보 게임을 합니다.");
		while(true) {
			System.out.print("가위 바위 보!>> ");
			String user = scan.next();
			int n = (int)(Math.random()*3); //0,1,2 중에서 컴퓨터가 랜덤하게 결정
			
			if (user.equals("그만")) { //그만을 입력했을 경우 종료
				System.out.println("게임을 종료합니다...");
				break;
			}
			else if (user.equals(str[0])) { //사용자가 가위 입력
				if(str[n].equals("가위")) //컴퓨터가 낸것이 가위인지 비교하는 코드
					System.out.println("사용자 = "+str[0]+", 컴퓨터 = "+ str[n]+", 비겼습니다.");
				else if(str[n].equals("바위")) //컴퓨터가 낸것이 바위인지 비교하는 코드
					System.out.println("사용자 = "+str[0]+", 컴퓨터 = "+ str[n]+", 컴퓨터가 이겼습니다.");
				else //컴퓨터가 보를 냈을 때
					System.out.println("사용자 = "+str[0]+", 컴퓨터 = "+ str[n]+", 사용자가 이겼습니다.");
			}
			else if (user.equals(str[1])) { //사용자가 바위 입력
				if(str[n].equals("가위")) //컴퓨터가 낸것이 가위인지 비교하는 코드
					System.out.println("사용자 = "+str[1]+", 컴퓨터 = "+ str[n]+", 사용자가 이겼습니다.");
				else if(str[n].equals("바위")) //컴퓨터가 낸것이 바위인지 비교하는 코드
					System.out.println("사용자 = "+str[1]+", 컴퓨터 = "+ str[n]+", 비겼습니다.");
				else //컴퓨터가 보를 냈을 때
					System.out.println("사용자 = "+str[1]+", 컴퓨터 = "+ str[n]+", 컴퓨터가 이겼습니다.");
			}
			else { //사용자가 보 입력
				if(str[n].equals("가위")) //컴퓨터가 낸것이 가위인지 비교하는 코드
					System.out.println("사용자 = "+str[2]+", 컴퓨터 = "+ str[n]+", 컴퓨터가 이겼습니다.");
				else if(str[n].equals("바위")) //컴퓨터가 낸것이 바위인지 비교하는 코드
					System.out.println("사용자 = "+str[2]+", 컴퓨터 = "+ str[n]+", 사용자가 이겼습니다.");
				else //컴퓨터가 보를 냈을 때
					System.out.println("사용자 = "+str[2]+", 컴퓨터 = "+ str[n]+", 비겼습니다.");
			}		
		}
		scan.close(); //스캐너 종료
	}
}

 

'Programming > JAVA' 카테고리의 다른 글

패키지 개념과 자바 기본 패키지  (0) 2020.10.16
상속  (0) 2020.10.16
클래스와 객체  (0) 2020.10.16
[Java] print, printf, println의 차이  (0) 2020.09.03
자바의 기본 구조  (0) 2020.09.02

댓글