KH 10일차
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,,,,,,,