배열 연습문제 풀어보기

sim·2023년 3월 6일

자바의 정석

목록 보기
13/20

5-2.
arr[3].length = 2

5-3.
배열의 모든 요소 더하기!!
실수 : for문 안에 int i로 설정하는거 까먹

int[] arr = {10,20,30,40,50};
int sum=0;

for (int i=0; i<arr.length; i++) {
sum += arr[i];
}

System.out.println("sum="+sum);
//-> sum=150

5-4.
2차원 배열 총합과 평균
실수 : 이중 for문 사용하기 --> arr[i].length떠올리기.
arr[i][j]떠올리기
평균 구할때에 (float)와 함께 뒤를 괄호로 묶기/ arr.length*arr[i].length로 묶었는데, i가 아니라 모두 길이가 같기때문에 arr[0]으로 묶어도 됨.

int[][] arr = {
			{5,5,5,5,5},
			{10,10,10,10,10},
			{20,20,20,20,20},
			{30,30,30,30,30}
			};
int total = 0;
float average =0;

for (int i =0; i<arr.length; i++) {
	for (int j=0; j<arr[i].length; j++) {
    	total += arr [i][j];
    }
}

average = total/(float)(arr.length*arr[0].length);

System.out.println("total="+total);
System.out.println("average="+average);

5-5.
너무 어렵다....
1과 9사이의 중복되지 않은 숫자로 이루어진 3자리 숫자 만들어내기
어려움 : int tmp =0;으로 설정되어 있으니까 tmp만 쓰면 됨./ 서로 순서 바꾸기 공식 사용하기 tmp = i, i=j, j=tmp; / for문 완성하고나서 3개의 수를 배열ball3로 복사하기 --> arraycopy 어케쓰는지 몰랐음.-> 나는 Arrays.copyOfRange알았으니까 그걸 사용했어야 함!!

int[] ballArr = {1,2,3,4,5,6,7,8,9};
int[] ball3 = new int[3];

for (int i=0; i< ballArr.length; i++) {
	int j = (int)(Math.random() * ballArr.length);
	int tmp = 0;
		
	tmp = ballArr[i];
	ballArr[i] = ballArr[j];
	ballArr[j] = tmp; 
	} //배열 ballArr의 앞에서 3개의 수를 배열 ball3로 복사.
	
	System.arraycopy(ballArr, 0, ball3, 0 , 3);
    Or
    ball3 = Arrays.copyOfRange(ballArr, 0, 3);
	
	for(int i=0; i<ball3.length;i++) {
		System.out.print(ball3[i]);
        

5-6.
더 어렵다...헤엑
랜덤 글자 보고 원래 단어 맞추기.
어려움 : 일단 toCharArray() 써져있는데 그래서 for문안에 어떻게 넣으라는지.... 그리고 아직까진 int x 설정을 해서 random 돌린다음에 순서를 바꾸는 과정이 완벽히 이해가 가지는 않는다. 근데 대충 생각해보면 일단 첫 for문에서 words[i] 요게 첫번째 단어인지, 두번째 단어인지에다가 문자열을 문자배열char[]으로 바꿈.
그다음에 다시 for문을 써서 그 문자배열의 배열을 무작위로 만드는 과정. 배열 중 아무번째를 고른다음에 그걸 섞어놓으면 됨. 그게 바로 new String(question)이 되어서 문제로 나옴.

String[] words = {"television", "computer", "mouse", "phone"};

Scanner scanner = new Scanner(System.in);

for (int i=0; i<words.length; i++) {
	char[] question = words[i].toCharArray();
    int x = (int)(Math.random()*question.length);
    
    char tmp = question[i];
    question[i] = question[x];
    question[x] = tmp;
    }
    
    System.out.printf("Q%d. %s의 정답을 입력하세요.>", i+1, new String(question));
    String answer = scanner.nextLine();
    
    if (words[i].equals(answer.trim())
    	System.out.printf("맞았습니다.%n%n");
    else
    	System.out.printf("틀렸습니다.%n%n");
}
profile
sim

0개의 댓글