배열 응용실습 해보자 ! !
package arrayex;
public class ArrayTest01 {
public static void main(String[] args) {
int sum = 0;
float average = 0f;
int score[] = {100, 88, 100, 100, 90};
for(int i=0; i<score.length; i++) {
sum += score[i];
}
// 향상된 for문 출력 방법
// for(int n:score) {
// sum+=n;
// }
average = sum / score.length;
System.out.println("총점 : " + sum);
System.out.println("평균 : " + average);
}
}

package arrayex;
public class Arraytest3 {
public static void main(String[] args) {
int numArr[] = new int[10];
// 값을 입력받아 numArr에 값을 넣어줌
for(int i=0; i<numArr.length; i++) {
numArr[i] = i;
System.out.print(numArr[i]);
}
System.out.println();
for (int i=0; i<100; i++) {
// 0이상 1미만의 double형식의 난수를 생성해줌 / *10으로 0이상 10미만의 값으로 바꿔줄 수 있음
int n = (int)(Math.random()*10);
//배열의 첫번째요소와 임의의 요소를 선택하여 값을 교환하여 배열의 요소를 섞게 됨
int tmp = numArr[0];
numArr[0] = numArr[n];
numArr[n] = tmp;
}
// 바꿔준 값들 출력
for (int i=0; i<numArr.length; i++) {
System.out.println(numArr[i]);
}
}
}

package arrayex;
public class Arraytest4 {
static void arraySort(int[] arr) {
//우측 끝부터 오름차순으로 정렬되기 때문에 -1을하여 불필요한 부분 제거
//받은 배열의 길이만큼 반복하게 해줌
for (int i=0; i<arr.length-1; i++) {
// 최초에는 false로 선언해줌
boolean change=false;
// 마찬가지로 -1하여 우측 끝은 비교X
for(int j=0; j<arr.length-1; j++) {
if(arr[j] > arr[j+1]) {
// 앞쪽의 arr의 값이 더커서 if문을 타고들어왔기 때문에
// true로 선언해주므로써 아래 if문에서 break를 걸지 않게 됨
change=true;
// 정렬해주는 단계
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
// 만약 여기에서 바로위의 if문을 타지않고 바로 왔다면 최초의 값인 false이기 때문에 !을 받아
// true가 되어 break에 걸리게됨
if(!change) break;
}
}
public static void main(String[] args) {
// 값을 받을 수 있는 45개의 배열 선언
int numArr[] = new int[45];
// 값을 입력받아 numArr에 값을 넣어줌
for(int i=0; i<numArr.length; i++) {
numArr[i] = i+1;
}
for (int i=0; i<4007; i++) {
// 0이상 1미만의 double형식의 난수를 생성해줌 / *45으로 0이상 45미만의 값으로 바꿔줄 수 있음
int n = (int)(Math.random()*45);
//배열의 첫번째요소와 임의의 요소를 선택하여 값을 교환하여 배열의 요소를 섞게 됨
int tmp = numArr[0];
numArr[0] = numArr[n];
numArr[n] = tmp;
}
// 로또번호로 받을 배열을 선언해줌
int[] lottoOne = new int[6];
for (int i = 0; i < lottoOne.length; i++) {
// 인덱스 범위를 lottoOne 배열의 크기로 수정
// numArr의 값을 lottoOne의 값으로 복사해줌
lottoOne[i] = numArr[i];
}
// arraySort 함수 실행
arraySort(lottoOne);
int cnt=0;
for (int i =0; i<lottoOne.length; i++) {
cnt++;
System.out.printf("로또 %s번째 숫자 = " + lottoOne[i] ,cnt);
System.out.println();
}
}
}

package arrayex;
import java.util.Arrays;
public class Arraytest5 {
public static void main(String[] args) {
int[] numArr = new int[10];
for (int i=0; i < numArr.length ; i++ ) {
System.out.print(numArr[i] = (int)(Math.random() * 100));
}
System.out.println();
for (int i=0; i < numArr.length-1 ; i++ ) {
boolean changed = false; // 자리바꿈이 발생했는지를 체크한다.
for (int j=0; j < numArr.length-1 ;j++) {
if(numArr[j] > numArr[j+1]) { // 옆의 값이 작으면 서로 바꾼다.
int temp = numArr[j];
numArr[j] = numArr[j+1];
numArr[j+1] = temp;
changed = true; // 자리바꿈이 발생했으니 changed를 true로.
}
}
if (!changed) break; // 자리바꿈이 없으면 반복문을 벗어난다.주석 후 확인
for(int k=0; k<numArr.length;k++)
System.out.println(Arrays.toString(numArr));
System.out.println();
}
}
}

package arrayex;
import java.util.Scanner;
public class ArrayWordEx {
public static void main(String[] args) {
String[][] words = {
{"apple","사과"}, // words[0][0], words[0][1]
{"banana","바나나"}, // words[1][0], words[1][1]
{"peach","복숭아"} // words[2][0], words[2][1]
};
// 배열이 나와야하므로 String[]
Scanner sc = new Scanner(System.in);
for(String[] word:words) {
String en = word[0];
String kr = word[1];
System.out.printf("Q. %s의 뜻은? \n",en);
String ans = sc.next();
if(ans.equals(kr)) {
System.out.println("정답");
}else {
System.out.println("오답입니다. 정답은 " +kr);
}
}
} // main의 끝
}

추가로 일반 for문을 사용하여 실습해보자.
package arrayex;
import java.util.Scanner;
public class ArrayWordEx {
public static void main(String[] args) {
String[][] words = {
{"apple","사과"}, // words[0][0], words[0][1]
{"banana","바나나"}, // words[1][0], words[1][1]
{"peach","복숭아"} // words[2][0], words[2][1]
};
// 배열이 나와야하므로 String[]
Scanner sc = new Scanner(System.in);
for(int i=0;i<words.length;i++) {
System.out.printf("Q%d. %s의 뜻은?", i+1, words[i][0]);
String tmp = sc.nextLine();
if(tmp.equals(words[i][1])) {
System.out.printf("정답입니다.%n%n");
} else {
System.out.printf("틀렸습니다. 정답은 %s입니다.%n%n",words[i][1]);
}
} // for
} // main의 끝
}
