back/Java

KH 10일차

devel0per 2022. 7. 13. 15:02

10일차인 오늘은 가변배열, 매개변수, 생성자에 대해서 공부했다.

 

(1) 가변배열

public class Array_10 {
	public static void main(String[] args) {
		
		int[][] var = new int[3][]; // 가변배열 뒤쪽 마지막 값만 비워둘 수 있다
		
		
		int i, j, k = 0;
		
		var[0] = new int[3];
		var[1] = new int[2];
		var[2] = new int[4];
		
		
		// 초기값 입력
		
		for(i = 0; i < var.length; i++) {
			for(j = 0; j < var[i].length; j++) {
				var[i][j] = k++;
			}
		}
		
		for(i = 0; i < var.length; i++) {
			for(j = 0; j < var[i].length; j++) {
				System.out.print(var[i][j] + "\t");
			}
			System.out.println();
		}
		
//		int[] number = {4, 4, 4, 6, 5, 7, 9, 7, 5, 4};
//		
//		int[] counter = new int[10];
//		
//		for(int i = 0; i < counter.length;i++) {
//			counter[number[i]]++;			
//		}
		
	}
}

 

public class Array_13 {
	public static void main(String[] args) {
		// final을 사용하면 상수가 되어버림 더 이상 변경 불가능
		// final로 이루어진 변수는 대문자로 쓰는것이 관례입니당.
		final int SIZE = 6;
		
		// freq는 0~5 인덱스를 가진 배열
		int[] freq = new int[SIZE];
		
		for(int i = 0; i < 50; i++) {
			
			/* 만약 난수에서 0이 발생했다 => 0번 인덱스 +1
						 1이 발생했다 => 1번 인덱스 + 1
						 2가 발생했다 => 2번 인덱스 + 1
						 3이 발생했다 => 3번 인덱스 + 1
						 4가 발생했다 => 4번 인덱스 + 1
						 5가 발생했다 = > 5번 인덱스 +1				 
						 */
			
			++freq[(int)(Math.random() * SIZE)];
			
		}
		
		System.out.println("===========================");
		System.out.println("  면            빈도수");
		System.out.println("===========================");
		
		for(int i = 0; i < SIZE; i++) {
			System.out.println("  " + (i + 1) + "       :     " + freq[i] +"");
		}	
	}
}

 

public class Array_15 {
	public static void main(String[] args) {
		
		int[] number = new int[10];
		int[] count = new int[10];
		
		for(int i = 0; i < number.length; i++) {
			number[i] = (int)(Math.random() *10);
			System.out.print(number[i] + " ");
			
		}
		System.out.println("\n");
		
		for(int i = 0; i < number.length; i++) {
			
			count[number[i]]++;
		}
		
		for(int i = 0; i < number.length; i++) {
			System.out.println(" " + i + " 의 갯수 :" + count[i]);
		}
	}
}

 

(2) 매개변수

public class Array_11 {
	public static void main(String[] args) {
		System.out.println("매개 변수의 갯수 : " + args.length);
		
		for(int i = 0; i < args.length; i++) {
			System.out.println("args[" + i + "] = " + args[i]);
		}
	}

}

 

public class Array_12 {
	public static void main(String[] args) {
		if(args.length != 3) {
			System.out.println("usage : java Array_12 num1 OP num2");
			System.exit(0);
		}
		// Integer.parseInt = 숫자형으로 변환시켜주겠다는 것
		int num1 = Integer.parseInt(args[0]);
		// charAt() = ()안의 숫자번째의 문자열을 가져오겠다는 것
		char op = args[1].charAt(0);
	
		int num2 = Integer.parseInt(args[2]);
		
		int result = 0;
		
		switch (op) {
		case '+':
			result = num1 + num2;
			break;
			
		case '-':
			result = num1 + num2;
			break;
			
		case 'x':
			result = num1 + num2;
			break;
			
		case '/':
			result = num1 + num2;
			break;
			
		default:
			System.out.println("사칙 연산만 가능합니다");
			System.out.println("다른 연산자는 지원되지 않습니다.~~~~");
			break;
		}
		System.out.println("결과 :" + result);
	}
}

(3) 생성자

 

class TV {
	
	// Tv의 속성(멤버 변수 == 필드)
	
		String color;    //색상
		boolean power;	// 전원(on / off)
		int channel;  // 채널
		int volume;  //볼
		
		void volumeUp()
		{
			++volume;
		}
		
		void volumeDown()
		{
			--volume;
		}
		
		void spower()
		{
			power = !power;
		}
		
		void channelUp()
		{
			++channel;
		}
		
		void channelDown()
		{
			--channel;
		}
}

public class MyTV {
	
	public static void main(String[] args) {
		
		TV  ttvv ; //스택영역에 레퍼런스 변수 ttvv을 위한 공간이 마련된다.
		
		ttvv = new TV();  // new에 의한 인스턴스 생성이란 필드, 메서드 값들을 저장할 수
						  // 있는 별도의 공간을 heap 영역에 배당받는 것을 의미한다.
						  // 참조 변수는 생성된 인스턴스의 주소를 저장하기 위해
						  // 스택 영역에 메모리를 할당한다.
		
		TV ttvv2 = new TV();
		//전원을 킨다.
		ttvv.spower();
		ttvv2.spower();
		
		//채널을 변경한다.
		
		ttvv.channel = 7;
		ttvv2.channel = 11;
		
		ttvv.channelUp(); // 8
		ttvv.channelUp(); // 7
		ttvv.channelUp(); // 6
		
		//채널을 밑으로 1 내린다.
		ttvv2.channelDown(); //10
		ttvv2.channelDown(); // 9
		ttvv2.channelDown(); // 8
		ttvv2.channelDown(); // 7
		ttvv2.channelDown(); // 6
		
		ttvv.volume = 3;
		ttvv2.volume = 5;
		
		//ttvv 볼륨 2 내리기
		ttvv.volumeDown();
		ttvv.volumeDown();
		
		
		//ttvv2 볼륨 3 올리기
		ttvv2.volumeUp();
		ttvv2.volumeUp();
		ttvv2.volumeUp();

		
		System.out.println("현재 ttvv는 " + ttvv.power + " 상태 입니다.");
		System.out.println("현재 TV 채널은 " + ttvv.channel + "  입니다.");
		
		System.out.println("현재 ttvv2는 " + ttvv2.power + " 상태 입니다.");
		System.out.println("현재 ttvv2 채널은 " + ttvv2.channel + "  입니다.");
		
		System.out.println("현재 ttvv의 볼륨은 " + ttvv.volume + " 입니다.");
		System.out.println("현재 ttvv2 볼륨은 " + ttvv2.volume + " 입니다.");	
	}

}

과제

(1) 1~6까지의 수를 난수로 받고, 1~6 까지의 수가 각각 몇개가 나왔나 출력하는 코드를 작성하시오.

public class Prc_1 {
	public static void main(String[] args) {
		
		// 난수 6개를 뽑아서 1~6의 숫자가 각 몇개가 출력되었는지
		
		final int SIZE = 6;
		
		int[] arr = new int[SIZE];
		
		for(int i = 0;i < arr.length; i++) {
			++arr[(int)(Math.random() * SIZE)];
		}
		
		System.out.println("================================");
		System.out.println("  number          frequency");
		System.out.println("================================");
		
		for(int i = 0; i < arr.length; i++) {
			System.out.println("    " + (i+1) + "                 "  + arr[i]);
		}
		
	
		
		
	}
}

(2) 1차원 배열을 1개 생성후에 사용자로 부터 입력받은 숫자가 배열의 몇번째에 존재하는지 찾는 코드를 작성하시오.

import java.util.Scanner;

public class Prc_1 {
	public static void main(String[] args) {
		
		// 1차원 배열을 1개 생성후에 사용자로 부터 입력받은 숫자가 배열의 몇번째에 존재하는지 찾는 코드를 작성하시오.
		
		int[] arr = {100, 90, 80, 70, 60, 50, 40, 30, 20, 10};
		
		int a = 0;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("값을 입력해보세요!");
		
		int answer = sc.nextInt();
		
		for(int i = 0;i < arr.length;i++) {
			if(arr[i] == answer) {
				a = i+1;
			}
		}
			if(a < arr.length && a > 0) {
				System.out.println("your answer is " + a + " th located");
			}
			else {
				System.out.println("your answer is not located");
			}		
		}	
	}

(3) 1부터 100까지의 랜덤한 수를 만들어놓고 사용자가 입력한 수가 랜덤한 수 보다 작으면 작다고 알려주고 크면 크다고 알려줘서 사용자가 맞추게끔하는 게임만들기 !

 

import javax.swing.JOptionPane;

public class Game_1 {
	public static void main(String[] args) {
		
		// 1부터 100까지의 랜덤한 수.
		int answer = (int)(Math.random() * 100)+1;
		
		int input = 0;
		String temp = "";
		int count = 0;
		
		do {
			count++;
			temp = JOptionPane.showInputDialog("1~100 사이의 숫자를 입력하시오!" + " 끝내려면 -1을 입력하세요!!");
			
			if(temp == null || temp.equals("-1")) {
				break;
			}
			
			System.out.println("입력 값:" + temp);
			
			// temp에서 받은값을 input값에 넣어서 활용. Integer.parseInt로 정수화 시키기.
			input = Integer.parseInt(temp);
			
			if(answer > input) {
				System.out.println("더 큰수를 입력하세요!");
			}
			else if(answer < input) {
				System.out.println("더 작은수를 입력하세요!");
			}
			else {
				System.out.println("드디어 맞추었습니다.~~~");
				System.out.println("시도횟수는 " + count + " 번 입니다.");
				break;
			}
			
		}while (true);
		
		}
	
	}

 


아침에 버스타기 전에 찍은사진 새벽에 비 엄청 오길래 두려웠는데, 다행히 비 안오길래 안도했다.. 이때까지만 해도 내가 집에 올 때 무슨일을 당할지 꿈에도 상상못함..

 

 

앞으로 목표.. 등원하기 전에 아침마다 과일이나, 과일주스 마시기.. (비타민 C 많은걸로...) + 쉬는시간마다 앉아 있지 말고 나가서 스트레칭하기.. 입니다..

 

학원 다니면서 느낀게,, 점심시간이 정말 행복하다... 위치가 강남이라 간접 직장인들 체험도 할 수 있고 은근히 점심값 싼거같아... 서울 물가가 용인보다 난듯,,,?

 

이렇게 하루를 열심히 보내다가 집가는길에 진짜 엄청 쏟아지는 장댓비에 온몸이 다 젖고,, 흰티라서 젖으면 안되는데,,, 신발 미끄러져서 한번 넘어지고,, 진짜 분노지수 200000000배 올랐다가... 시원한 에어컨에 한번 사그라들고,,, 집가는길에 그냥 모든걸 포기하고 우산만 쓰고 일부러 첨벙첨벙 다녔다.. 비야.. 하루종일 와도돼.. 근데 나 학원갈때랑 집갈때 딱 두번만 오지 말아주라,,,,, plzz,,,,,,,