728x90
728x90
1. Random 클래스를 이용하여 0~10까지 임의 숫자를 11개를 배열에 채운 다음 배열의 첫번째 숫자는 0, 두번째 숫자는 1로 순차적으로 10까지 나누어 합계를 구하시오. 정수를 0으로 나눌 경우 발생하는 예외처리를 하시오.
> 1차시도
더보기
public class RandomArray {
public static void main(String[] args) {
int p[][]; //배열 선언
p = new int[1][11];
int sum=0; //합 선언
// 11개의 정수를 랜덤하게 발생 + 저장
for(int i=0; i<1; i++)
for(int j=0; j<11; j++)
p[i][j] = (int)(Math.random()*11);
// 배열 출력
for(int i=0; i < p.length; i++) {
for(int j=0; j < p[i].length; j++)
System.out.print(p[i][j] + " ");
System.out.println();}
//배열의 첫번째 숫자는 0, 두번째 숫자는 1로 순차적으로 10까지 나누기
for(int i=0; i<1; i++){
for(int j=0; j<11; j++)
for(int m=0; m<10; m++) {
System.out.print(p[i][j]/m + " ");
System.out.println(); }}
//나눈 배열의 원소 합계
for(int i=0; i<1; i++){
for(int j=0; j<11; j++)
sum += p[i][j];
System.out.println(); }
System.out.println("합계 >> " + sum);
}
}
배열 출력까지는 괜찮은데 0나누기 시 예외 발생으로 강제 종료.
> 2차시도
더보기
public class test {
public static void main(String[] args) {
int p[][]; //배열 선언
p = new int[1][11];
int n=0;
int sum=0; //합 선언
// 11개의 정수를 랜덤하게 발생 + 저장
for(int i=0; i<1; i++)
for(int j=0; j<11; j++)
p[i][j] = (int)(Math.random()*11);
// 배열 출력
for(int i=0; i < p.length; i++) {
for(int j=0; j < p[i].length; j++)
System.out.print(p[i][j] + " ");
System.out.println();
System.out.println("배열의 첫번째 숫자는 0, 두번째 숫자는 1로 순차적으로 10까지 나누어 합계를 구하시오.");
System.out.println(); }
//배열의 첫번째 숫자는 0, 두번째 숫자는 1로 순차적으로 10까지 나누기
for(int m=0; m<10; m++)
for(int i=0; i<1; i++)
for(int j=0; j<11; j++){
try{if(p[i][j]>=1) {
n=p[i][j]/m;
System.out.print(n + " "); }
else {
n=p[i][j];
System.out.print(n + " "); }}
catch(ArithmeticException e) {}}
//나눈 배열의 원소 합계
for(int i=0; i<1; i++){
for(int j=0; j<11; j++)
sum += p[i][j];
System.out.println(); }
System.out.println("합계 >> " + sum);
} }
원인: for문 3번 반복
해결: 나누기 연산 결과를 나타낼 배열 하나 더 만들기 = b[][]
간략ver (배열 발생 후 연산처리까지 끝내고 배열 저장.)
public class RandomArray2 {
public static void main(String[] args) {
int a[]; //배열 선언
a = new int[11];
int sum=0; //합 선언
// 11개의 정수를 랜덤하게 발생 + 저장 + 나누기 연산
for(int i=0; i<11; i++)
for(int j=0; j<10; j++)
try{ a[i] = (int)(Math.random()*11)/j; }
catch(ArithmeticException e) {} //예외 처리 코드
// 배열 출력
for(int i=0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
// 배열의 원소 합계
for(int i=0; i<11; i++)
sum += a[i];
System.out.println();
System.out.println("합계 >> " + sum);
}
}
2. 1번 문제의 배열을 숫자가 중복되지 않게 만드시오.
> 1번 문제에서 정수를 0으로 나눌 경우 발생하는 예외처리를 안 하면? 실행 중 강제 종료
> 1번 문제에서 나누기 연산하지 않은 배열 출력 시
> 2번 문제에서 나누기 연산하지 않은 배열 출력 시
728x90
728x90
'공부 기록 > JAVA' 카테고리의 다른 글
[java] 실습_2차원 배열 출력 (0) | 2021.04.02 |
---|---|
[java] 실습_3개의 정수를 입력 받아 높은 수 대로 출력 (0) | 2021.03.29 |
댓글