1-1. 숫자 10개 입력받아서 총합 & 평균
Scanner sc = new Scanner(System.in);
int i, sum;
sum = 0;
int[] num1 = new int[10];
for (i = 0; i < num1.length; i++) {
System.out.println("숫자를 입력하시오");
num1[i] = sc.nextInt();
sum += num1[i];
}
System.out.println("총합:" + sum);
sum /= 10;
System.out.println("평균:" + sum);
강사님
int i, sum = 0;
int [] arr = new int[10]; //크기 10인 배열 생성
Scanner sc = new Scanner(System.in);
//배열크기(10)만큼 반복
for (i = 0; i < arr.length; i++) {
System.out.print("num:");
//숫자 입력받아서 배열 i번째 방에 할당
arr[i] = sc.nextInt();
sum += arr[i]; //각 방의 값을 sum에 누적
}
//평균계산 -- 평균은 소숫점 나올 수 있으니까 float 변수 생성
//계산할 때 정수로 자동 형변환 되니까 실수로 강제 형변환
float avg = (float) sum / arr.length;
//배열 요소 출력
System.out.println("배열요소");
for (i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println();
//계산 결과, 총합 & 평균 출력
System.out.println("sum:" + sum + ", avg:" + avg);
1-2. 최댓값 출력
최댓값을 받을 변수를 초기화
int max = arr[0]
배열 값으로 비교할 거니까 배열값으로 초기화!!!!!!!!!
int max = num1[0];
for (i = 0; i < num1.length; i++) {
if (max < num1[i]) {
max = num1[i];
}
}
System.out.println("최댓값:" + max);
강사님 설명 첨부
/*
* max: 가장 큰 값을 담을 변수
* 임의로 맨 앞 값으로 초기화.
* max보다 더 큰 값을 찾기 위해 비교해야 하는데 값이 있어야 비교 가능
*/
int max =arr[0];
//현재 max가 가진 값보다 더 큰 값을 찾기 위해
for (i = 0; i < arr.length; i++) {
if (max < arr[i]) { //1번 방부터 끝까지 max와 비교해서 더 큰 값을 만나면
max = arr[i]; //max의 값을 그 값으로 교체
}
} //이 루트가 끝나면 최종 가장 큰 값이 max에 남아있음
//찾은 최댓값 출력
System.out.println("최댓값:" + max);
//최솟값은 부등호만 반대로 바꾸면 됨
1-3. 새로 입력한 숫자가 몇 번째에 있는지 or 없는지 (순차 탐색)(중복 탐색X)
System.out.println("찾고자 하는 숫자를 입력하시오");
int find = sc.nextInt();
for (i = 0; i < num1.length; i++) {
if (find == num1[i]) {
System.out.println(i + 1 + "번째에 위치함");
}
if (find != num1[i]) {
System.out.println("없다");
}
}
강사님
1) boolean
//순차 탐색
System.out.println("찾고 싶은 값 입력:");
int num = sc.nextInt();
//flag: 찾았나 못찾았나 표시.true: 못찾았다 /false: 찾았다
boolean flag = true;
//배열의 값을 하나씩 꺼내서 num과 비교
for (i = 0; i < arr.length; i++) {
if (num == arr[i]) { //num과 같은 값을 만나면 출력하고 루프 종료
System.out.println(i + "번째 방에 있다");
flag = false; //찾았다는 표시 설정
break; //루프 빠져나옴
}
}
//순차적으로 탐색하고 찾는 값이 없다면 flag 처음 설정값인 true 그대로 가지고 있음
if(flag) { //못찾았다면
System.out.println("없다");
}
2) flag 변수 없는 순차 탐색
System.out.println("찾고 싶은 값 입력:");
int num = sc.nextInt();
for (i = 0; i < arr.length; i++) {
if (num == arr[i]) { //찾는 값과 배열 각 값을 비교해서 같은 값을 만나면
System.out.println(i + "번째 방에 있다"); //출력
break; //루프 종료
}
} //루프가 끝났을 때 찾는 값이 있다면 루프는 끝까지 돌지 않음. => i는 arr.length까지 도달 못함
//=> 못 찾았다면 루프가 끝까지 돌기 때문에 i는 arr.length에 도달
if(i == arr.length) {
System.out.println("없다");
}
3) 중복탐색 하고 싶다면
int cnt = 0; //찾은 값의 개수
System.out.println("찾고 싶은 값 입력:");
int num = sc.nextInt();
String result = ""; //결과 텍스트를 담을 변수
for (i = 0; i < arr.length; i++) {
if (num == arr[i]) { //찾는 값과 배열 각 값을 비교해서 같은 값을 만나면
result += i + "번째 방에 있다" + "\n"; //result에 찾은 메시지 추가, +로 텍스트도 담을 수 있음
cnt++; //찾은 값 카운팅
}
}
if(cnt == 0) { //못찾았으면
System.out.println("없다");
} else {
System.out.println(result);
}