[5-4] 2차원 배열 arr에 담긴 모든 값의 총합과 평균을 구하는 프로그램을 완성하시오.
public class No1 {
public static void main(String[] args) {
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); // int로 나눌 경우 int 나누기 int 이므로 결과를 int로 얻는다. 그러므로 나누는 값을
//형변환해야한다.
}
System.out.println("total = " + total);
System.out.println("average = " + average);
}
}
# 숙지해야할 점:
평균을 구할 때는 배열의 모든 요소의 총합을 개수로 나누면 되는데, int로 나누면 int 나누기 int 이기 때문에 결과를 int로 얻으므로 소수점 이하의 값을 얻을 슈 없다. 그래서 나누는 값 역시 float으로 형변환해주어야한다.
int형(4byte) 보다 크기가 작은 자료형은 int형으로 형변환 후에 연산을 수행한다.
두 개의 피연산자 중 자료형의 표현 범위가 큰 쪽에 맞춰서 형변환 된 후 연산을 수행한다.
정수형 간의 나눗셈에서 0으로 나누는 것은 금지되어 있다.
'공부 STUDY > JAVA' 카테고리의 다른 글
[JAVA] 자바의 정석 연습문제 [6-6, 6-7] static 메서드와 인스턴스 메서드의 차이 (0) | 2023.02.26 |
---|---|
[JAVA] 자바의 정석 연습문제 5장 배열 [5-5] (0) | 2023.02.25 |
[JAVA] Assertions.assertThat 비교 하기 (0) | 2023.01.25 |
[JAVA] File 클래스 | RandomAccessFile 클래스에 대해 알아보자 (0) | 2023.01.24 |
[JAVA] 직렬화 (Serialization ), 역직렬화 (Deserialization) (0) | 2023.01.24 |