자신에게 친절할 것 :)

Web Developing/Java

[java] 배열2

Tashapark 2024. 4. 12. 21:51
728x90

// 남궁 성의 자바의 정석 듣는 중//

 

- 랜덤 값은 배열 내의 인덱스에 저장된 값을 서로 바꾸는 것...

- ..쟈스에서 배열의 길이로 랜덤 값을 할때는 중복이랑 소수점도 나와서 따로 정수값만 나오게 따로 코드를 추가해주는 건데..

이건 왜 이러는 건지 모르겠음..?

 

int[] numArr = {0,1,2,3,4,4,5,6,7,8,9};
		System.out.println(Arrays.toString(numArr));

		for (int i=0; i < numArr.length; i++ ) {
			int n = (int)(Math.random() * 10);  // 0~9 
			int tmp = numArr[i]; //0대신 i로 바꿔주면 더 잘 섞임. 0은 첫번째 값을 계속 바꾸는 거니깐. 
			numArr[i] = numArr[n];
			numArr[n] = tmp;
		}
		System.out.println(Arrays.toString(numArr));
        
        
 // 다른 예제
 //index : 0-45-1, 0~44 
		int[] ball = new int[45];  // 45개 정수값 저장.    

		// 배열 각 요소에 1~45값 저장. 
		for(int i=0; i < ball.length; i++)       
			ball[i] = i+1;    // ball[0]에 1 저장.

		int tmp = 0;   // 두 값 바꾸는 데 사용하는 임시변수.
		int j = 0;     // 임의의 값을 얻어서 저장할 변수. 

		// 배열의 i번째 요소와 임의의 요소에 저장된 값 설로 바꿔서 값을. 
		// 0번째에서 5번째 꺼까지 모두 6개만 변경.
		for(int i=0; i < 6; i++) {       
			j = (int)(Math.random() * 45); // 0~44범위를 임의로. 
			tmp     = ball[i]; 
			ball[i] = ball[j]; 
			ball[j] = tmp; 
		System.out.println(Arrays.toString(ball));
		} 

		// 배열 ball 앞에서 부터 6개 요소 출력. 
		for(int i=0; i < 6; i++) 
			System.out.printf("ball[%d]=%d%n", i, ball[i]); 
	}
    
//[45, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 1]
//[45, 25, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 1]
//[45, 25, 7, 4, 5, 6, 3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 1]
//[45, 25, 7, 12, 5, 6, 3, 8, 9, 10, 11, 4, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 1]
//[45, 25, 7, 12, 34, 6, 3, 8, 9, 10, 11, 4, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 2, 26, 27, 28, 29, 30, 31, 32, 33, 5, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 1]
//[45, 25, 7, 12, 34, 2, 3, 8, 9, 10, 11, 4, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 6, 26, 27, 28, 29, 30, 31, 32, 33, 5, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 1]
//ball[0]=45
//ball[1]=25
//ball[2]=7
//ball[3]=12
//ball[4]=34
//ball[5]=2

 

- 로또 번호 뽑을 때 앞에 6개만 랜덤으로 돌려도 충분히 섞인다는 건데... 씁.. 

- 다른 코드와 차이가 뭐지? int로 한정지어져서 그런건가?  ㅇㅇ 형변환해서 그럼

 

- string은 참조형이라서 기본값은 null

- 원래는 생성될 때 값이 들어가는 것이 아니라, 주소 값이 들어가는 데 이해하기 좋게 편의상 저렇게 적은 것. 

 

	//index: 0-2
    String[] strArr = { "가위", "바위", "보"};
	System.out.println(Arrays.toString(strArr));
	
	for(int i=0;i<10;i++) {
		int tmp = (int)(Math.random()*3);
		System.out.println(strArr[tmp]);
//어차피 인덱스 값이 출력되니깐, 
//strArr[tmp] 배열만 추가해주면 출력값이 숫자가 아니라 가위, 바위 보로 나옮
//걍 인덱스 값만 나오게 하려면 귣이 tmp로 변수 안 빼고 걍 (int)(Math.random()*3)출력하면 됨. 
	}

//[가위, 바위, 보]
//바위
//가위
//바위 //이렇게 10번

- 이렇게 하니깐 이해가 됨.. ㅎ

 

-... scanner말고 커맨드 라인으로 할 수 있다는 거 같은데.. 터미널에서 입력하는 것 같은 건가?

=> 하여간 이렇게 하면 코드는 망가뜨리지 않고(매번 업데이트 하지 않고) 돌릴 수 있어서 이렇게 하는 듯 

class Ex5_7 {
	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] + "\"");
		}
		//이클립스의 run configuration에서 variable에 변수 값을 넣어도 됨. 
		//예. abc 123 "Hello world"
	}
}

//매개변수의 개수:3
//args[0] = "abc"
//args[1] = "123"
//args[2] = "Hello world"

 


맥 때문에... 매번 고생하는.. 나.

https://blog.naver.com/jdub7138/220934381209

 

맥 터미널 기본 명령어 (Mac Terminal)

ls 조회하기(list). 윈도우 command prompt의 dir와 동일 cd 디렉토리명 해당 디렉토리로 이동 (change dir...

blog.naver.com

 

파일 명을 누르고 opt+enter --> resource에서 위치확인 가능 --> 해당 폴더 열고.. 상위 폴더로 안 가지니깐 --> 아이템 정렬을 계층으로 바꿈 --> 그렇게 bin 폴더로 넘어가서 --> 경로가 안보이니깐 --> 우클릭 정보가져오기 해서 --> cd 터미널에 복붙 --> 우린.. dir 아님 ls 임...

 

bin에서 매개 변수는 확인이 되고 적용도 되는데,, 코드를 보려고 ㅏ니깐.. src에서 안 먹힘..

나도 이유를 모르겠음.. 검색해도 모르겠음. 

 일단 유뷰트 댓글로 질문은 했으나.. 글쎄.. 모른다고 하실듯 

내 계정-MacBookAir bin % ls
Ex5_1.class		Ex5_2.class		Ex5_6.class
Ex5_10.class		Ex5_3.class		Ex5_7.class
Ex5_1_temp2.class	Ex5_4.class		Ex5_8.class
Ex5_1_tmp.class		Ex5_5.class		Ex5_9.class
asus@Dayeongui-MacBookAir bin % Ex5_7
zsh: command not found: Ex5_7
내 계정-MacBookAir bin % java Ex5_7
매개변수의 개수:0
내 계정-MacBookAir bin % java Ex5_7 abc 123 "Hello world"
매개변수의 개수:3
args[0] = "abc"
args[1] = "123"
args[2] = "Hello world"
내 계정-MacBookAir bin % cd ..  
내 계정-MacBookAir ch05 % ls   
bin	src
내 계정-MacBookAir ch05 % cd src
내 계정-MacBookAir src % ls
Ex5_1.java		Ex5_2.java		Ex5_6.java
Ex5_10.java		Ex5_3.java		Ex5_7.java
Ex5_1_temp2.java	Ex5_4.java		Ex5_8.java
Ex5_1_tmp.java		Ex5_5.java		Ex5_9.java
내 계정-MacBookAir src % type Ex5_7.java
Ex5_7.java not found

//이유를 몰라..

 

728x90
반응형

'Web Developing > Java' 카테고리의 다른 글

[Java] 객체지향 언어  (0) 2024.04.13
[java] 배열 3  (0) 2024.04.13
[Java] 배열  (0) 2024.04.02
[Java] 조건문과 반복문: if, if else if, switch문 // for, while, do-while문  (1) 2024.03.29
[java] 비교연산자  (0) 2024.03.20