JAVA - Day5 - Array,Random

#1 - Array
import java.util.Scanner;

public class ArrayTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
//#1
//배열 : 여러개의 변수를 하나로 묶었다.
//선언 방법
//자료형 [] 배열이름 = new  자료형 [개수]

//정수 3개를 저장하는 배열
int[] Arr = new int [3];
//new로 메모리 공간에 할당해준다.
//int Arr [] 으로 선언해도 괜찮다. like CLang
//배열의 큰 장점 : 순차적으로 접근할 수 있다.
//초기화
//변수는 초기화를 안하면 쓰레기값이 들어가는데
//배열은 0이 들어간다.
//즉 배열은 자동초기화가 된다.
//여러개의 메모리 공간을 쉽고 빠르게 선언.
Arr [0] = 10;
Arr [1] = 20;
Arr [2] = 30;
System.out.println("#1");
System.out.println("Arr["+0+"] =" + Arr[0]);
System.out.println("Arr["+1+"] =" + Arr[1]);
System.out.println("Arr["+2+"] =" + Arr[2]);
System.out.println();
//#2
//간략화해보자.
System.out.println("#2");
for(int num2= 0; num2 <=2; num2++)
System.out.println(Arr[num2]);
//주의할 점!
//인덱스가 0번부터인 것을 명심하자.
//내가 선언한 개수 -1번까지 방번호.
System.out.println();
//#3
//입력받아서 해보기.
System.out.println("#3");
Scanner sc = new Scanner(System.in);
double [] Arr2 = new double [3];
System.out.println("3가지 실수를 입력하세요.");
for(int num3 = 0; num3 < 3; num3++)
Arr2[num3] = sc.nextDouble();
System.out.println();
for(int num4 = 0; num4 < 3; num4++)
System.out.println("Arr2["+num4+"]"+"="+Arr2[num4]);
System.out.println();
//#4
//선언과 동시에 초기화하기.
System.out.println("#4");
String [] name = {"누누", "Blue", "Dragon"};
for(int num4 = 0; num4 < 3; num4++)
System.out.println("name["+num4+"]"+"="+name[num4]);
System.out.println();
int [] age = {10,30,40,20,30};
//#5
System.out.println("#5");
//배열의 길이 확인하기.
//배열명.length
int len= age.length;
//배열의 길이가 len에 저장된다.
System.out.println("age배열의 길이"+len);
System.out.println();
for(int num4 = 0; num4 < age.length; num4++)
//이렇게 개수 세기 귀찮을 때 혹은 모를 때 .length를 이용하면 편하다.
System.out.println("age["+num4+"]"+"="+age[num4]);
//cf.
//ArrayList 는 배열과 동일하지만 추가가 되는 배열.
//일반 배열은 선언한 만큼만 데이터를 저장할 수 있는데
//그 점을 보완한 것이  ArrayList.
}

}

<#1 - Console>
#1
Arr[0] =10
Arr[1] =20
Arr[2] =30

#2
10
20
30

#3
3가지 실수를 입력하세요.
22.25
47.1
23.04

Arr2[0]=22.25
Arr2[1]=47.1
Arr2[2]=23.04

#4
name[0]=누누
name[1]=Blue
name[2]=Dragon

#5
age배열의 길이5

age[0]=10
age[1]=30
age[2]=40
age[3]=20
age[4]=30

#2 - Array의 활용
import java.util.Scanner;

public class ArrayTest2 {

public static void main(String[] args) {
// TODO Auto-generated method stub

//배열 활용 예제.
//#1
//10개의 정수를 저장하는 배열 선언.
//10개 데이터의 합을 출력해보자.
System.out.println("#1");
int [] Num = new int [] {10,2,3,4,30,40,10,80,90,100};
//선언과 동시에 초기화를 할 때 
//[]를 공백으로 두어야 한다.
//일반적으로 선언과 동시에 초기화를 할 때
//우항의 new int [] 를 제외한다
//int [] Num = {10,2,3,4,30,40,10,80,90,100};
int num;
int sum = 0;
for(num = 0; num < Num.length; num++)
sum += Num[num];
System.out.println("배열에 있는 모든 정수의 합 : "+sum);
System.out.println();
//#2
//배열에 있는 데이터 값 중에서 최대값을 구해보자.
System.out.println("#2");
int max=Num[0];
for(num = 0; num < Num.length; num++)
if(Num[num]>max)
max = Num[num];
System.out.println("배열의 최대값 : "+max);
System.out.println();
//#3
//그 배열의 최대값이 몇번방에 있는지 출력하자.
System.out.println("#3");
int [] Num2 = {10,2,3,4,30,80,40,10,60,2,1};
int max2 = Num2[0];
int j = 0;
int i;
for(i = 0; i < Num2.length; i++)
{
if(Num2[i]>max2)
{
max2 = Num2[i];
//좌항 우항 순서 주의하기!
j = i;
}
}
System.out.println("최대값은 "+max2+"이며");
System.out.println("최대값은 "+j+"번 방에 있습니다.");
System.out.println();
//비교하기
System.out.println("# 배열을 비교하기");
double [] stra = {140.1,150.1,160.1};
double [] strb = {140.1,150.1,160.1};
if(stra==strb)
{
System.out.println("같다.");
}
else
{
System.out.println("다르다.");
}
//왜 출력하면 다르다고 나올까?
//주소값이 다르기 때문!
System.out.println();
System.out.println("#배열의 멤버를 비교하기");
if(stra[0] == strb[0])
{
System.out.println("같다.");
}
else
{
System.out.println("다르다.");
}
System.out.println();
//2차원 배열
//3반에 3명씩 제기를 찬다.
System.out.println("#2차원 배열");
int[][] N = new int[3][3];
//1번째 반에 1번째 학생
System.out.println("1반의 1번 학생>>>");
Scanner sc = new Scanner(System.in);
int x,y;
//x는 반, y는 학생
for(x = 0; x < N.length; x++)
//이때 N.length는 3으로 출력된다.
{
for(y = 0; y < N.length; y++)
{
System.out.println((x+1)+"반 "+(y+1)+"번 학생 제기 수");
N[x][y] = sc.nextInt();
}
}

for(x = 0; x < N.length; x++)
{
for(y = 0; y < N.length; y++)
{
System.out.println(N[x][y]);
}
}
//for 문에서는 x값에 대해 반복할 때
//y값이 다시 0으로 초기화 되므로
//y에 대한 반복문을 탈출하면서
//y=0;을 따로 안해줘도 된다.
}

}

<#2 - Console>
#1
배열에 있는 모든 정수의 합 : 369

#2
배열의 최대값 : 100

#3
최대값은 80이며
최대값은 5번 방에 있습니다.

# 배열을 비교하기
다르다.

#배열의 멤버를 비교하기
같다.

#2차원 배열
1반의 1번 학생>>>
1반 1번 학생 제기 수
0
1반 2번 학생 제기 수
1
1반 3번 학생 제기 수
2
2반 1번 학생 제기 수
10
2반 2번 학생 제기 수
20
2반 3번 학생 제기 수
30
3반 1번 학생 제기 수
100
3반 2번 학생 제기 수
200
3반 3번 학생 제기 수
300
0
1
2
10
20
30
100
200
300

#3 - 난수 뽑기- Random, 가위바위보 만들기
import java.util.Random;
import java.util.Scanner;

public class Ex_01 {

public static void main(String[] args) {
// TODO Auto-generated method stub

//임의의 난수를 생성할때 Random 클래스를 쓴다.
Scanner sc = new Scanner(System.in);
Random rand = new Random();
//객체 생성
//이것도 스캐너처럼 클래스를 호출해야함.

// rand.nextInt(bound); 정수 뽑을때
// rand.nextInt();
// rand.nextInt(10);
// 0~9까지 숫자 중에서 랜덤하게 하나를 뽑는다.
// 즉, 인자값은 수의 개수를 의미.

// rand.nextInt(10)+1;
// 1~10까지 숫자 중에서 랜덤하게 하나를 뽑는다.
// +1 은 시작수로 생각하면 된다.

System.out.println("인자(인덱스) 값 없을 때");
System.out.println(rand.nextInt());
//shift + f2 를 누르면 함수 정보를 알 수 있다.
//-21억부터 21억까지 랜덤으로 출력.

System.out.println("인자(인덱스) 값 있을 때");
System.out.println(rand.nextInt(6));
//0~5번 사이의 수 중 랜덤으로 출력.

System.out.println();
//1~45중에 숫자를 하나 출력하자.
System.out.println("에러 로또숫자 : "+rand.nextInt(45)+1);
//뒤에 항상 1이 붙어서 출력되네.
//앞이 문자열이라서 + 가 연결 연산자로 사용되기 때문.

//바르게 고쳐보자.
System.out.println("로또숫자 : "+(rand.nextInt(45)+1));


//기타 랜덤 함수
System.out.println();
System.out.println("불린 랜덤");
System.out.println(rand.nextBoolean());
System.out.println("실수 랜덤");
System.out.println(rand.nextDouble());


while(true)
{
System.out.println();
//가위바위보 게임
System.out.println("=====================");
System.out.println("가위바위보 게임~");
System.out.println("1. 가위");
System.out.println("2. 바위");
System.out.println("3. 보");
System.out.println("=====================");
System.out.println("가위 바위 보 중에 선택하자.");
System.out.println("0을 누르면 종료!");
System.out.println();

int sel = sc.nextInt();

//컴퓨터
int com = rand.nextInt(3)+1;
//1~3사이의 난수를 하나 뽑는다.

switch(sel)
{
case 1:
System.out.println("사용자의 선택 : 가위");
if (com == 1)
System.out.println("비김");
else if (com == 2)
System.out.println("졌다 ㅜ");
else if (com == 3 )
System.out.println("이겼다!");
break;

case 2:
System.out.println("사용자의 선택 : 바위");
if (com == 1)
System.out.println("이겼다!");
else if (com == 2)
System.out.println("비김.");
else if (com == 3 )
System.out.println("졌다 ㅜ");
break;

case 3:
System.out.println("사용자의 선택 : 보");
if (com == 1)
System.out.println("졌다 ㅜ");
else if (com == 2)
System.out.println("이겼다!");
else if (com == 3 )
System.out.println("비김.");
break;

case 0:
System.out.println("프로그램 종료!");
return;
//프로그램 종료

default :
System.out.println("잘못 입력했잖아 ㅡㅡ..");

}// switch의 괄호


}//while의 괄호

}

}

#3' - 가위바위보의 코드를 좀더 줄여보자!
import java.util.Random;
import java.util.Scanner;

public class Ex_02 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
Random rand = new Random();

while(true) {

// 가위바위보게임!
System.out.println("==============================");
System.out.println(" 안녕하세요 가위바위보게임입니다.");
System.out.println("==============================");
System.out.println(" 1.가위");
System.out.println(" 2.바위");
System.out.println(" 3.보");
System.out.println("==============================");
System.out.print("당신의 선택??(0종료)>");
int sel = sc.nextInt();

// 컴퓨터
// 1~3사이의 난수를 하나 뽑는다.
int com = rand.nextInt(3)+1;

// 사용자기준!
if(sel == 0) break;

System.out.println(com);

int res = sel - com;

if(res == 0)
System.out.println("비겼다.");

else if(res == -2 || res == 1)
System.out.println("이겼다.");
else
System.out.println("졌다.");






// if((sel == 1 && com == 3)||(sel==2 && com==1)||(sel==3 && com==2))
// System.out.println("이겼다!");
// else if(sel == com)
// System.out.println("비겼다.");
// else if(sel==0) break;
//
// else
// System.out.println("졌다.");
}
}


}


<#3 - Console>
인자(인덱스) 값 없을 때
-1810184569
인자(인덱스) 값 있을 때
3

에러 로또숫자 : 171
로또숫자 : 4

불린 랜덤
true
실수 랜덤
0.19595611183544226

=====================
가위바위보 게임~
1. 가위
2. 바위
3. 보
=====================
가위 바위 보 중에 선택하자.
0을 누르면 종료!

1
사용자의 선택 : 가위
비김

=====================
가위바위보 게임~
1. 가위
2. 바위
3. 보
=====================
가위 바위 보 중에 선택하자.
0을 누르면 종료!

4
잘못 입력했잖아 ㅡㅡ..

=====================
가위바위보 게임~
1. 가위
2. 바위
3. 보
=====================
가위 바위 보 중에 선택하자.
0을 누르면 종료!

0
프로그램 종료!

#4 - 주사위 100번 던지기
import java.util.Random;

public class Ex_02 {

public static void main(String[] args) {
// TODO Auto-generated method stub

//주사위 100번 던지기
System.out.println();
System.out.println("주사위 100번 던지기~");
int [] count = new int [6];
Random rand = new Random();
int i;
for(i = 1; i <= 100; i++)
{
int j = rand.nextInt(6)+1;
// if (j == 1)
// count[0] += 1;
// else if (j == 2)
// count[1] += 1;
// else if (j == 3)
// count[2] += 1;
// else if (j == 4)
// count[3] += 1;
// else if (j == 5)
// count[4] += 1;
// else if (j == 6)
// count[5] += 1;
//간략화
count[j-1]+=1;
}
for(i = 0; i <= 5; i++)
System.out.println((i+1)+"의 눈의 주사위가 나온 횟수 : "+ count[i]);
}

}




댓글

이 블로그의 인기 게시물

11 - Scanf

JAVA - Day3 - Scanner, if, if else