출처 : [자바의 정석 - 기초편], 남궁성의 정석코딩 / Java의 정석 3rd Edition
총합, 평균, 최대값, 최소값 구하기
public class Test {
public static void main(String[] args) {
int[] score = {100, 88, 78, 90, 85};
//총합
int sum = 0;
for(int i=0; i<score.length; i++) {
sum += score[i];
}
//평균 : 총합/개수, 평균은 소수점까지 나와야하기 떄문에 float
float average = 0;
average = sum / (float)score.length;
//최대값, 최소값
int max = score[0];
int min = score[0];
// max와 min에 저장되어있는 값과 비교하여 저장
for(int i=0; i<score.length; i++) {
if(score[i]>max) {
max = score[i];
} else if(score[i]<min) {
min = score[i];
}
}
System.out.println("총합 : " + sum);
System.out.println("평균 : " + (float)average);
System.out.println("최대값 : " + max);
System.out.println("최소값 : " + min);
}
}
// 총합 : 441
// 평균 : 88.2
// 최대값 : 100
// 최소값 : 78
섞기(shuffle)
: 배열의 요소의 순서를 반복해서 바꿈
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 숫자 1~45 중 6개를 랜덤으로 뽑을 때
int[] numArr = new int[45];
// numArr에 1부터 45까지 순서대로 값을 넣음
for(int i=0; i<numArr.length; i++) {
numArr[i] = i+1; // 숫자 1부터 시작하기 위해 +1함
}
for(int i=0; i<10; i++) { // 10번 동안 반복
int n = (int)(Math.random()*45); // 0~44 범위를 랜덤으로 추출
int tmp = numArr[i]; // numArr[0~9]까지의 값을 저장하는 공간
numArr[i] = numArr[n]; //numArr[i]의 숫자가 n번째 요소로 변경됨
numArr[n] = tmp; //tmp값을 numArr[n]에 저장하여 섞음
}
System.out.println(Arrays.toString(numArr));
}
}
임의의 값으로 배열 채우기
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//num이라는 배열 안에 있는 임의의 값을 arr 배열에 랜덤으로 저장
int[] num = {-1,4,10,-50,80,20,15,-14};
int[] arr = new int[10];
for(int i=0; i<arr.length; i++) {
int n = (int)(Math.random()*num.length);
arr[i] = num[n];
}
System.out.println(Arrays.toString(arr));
}
}
//[-14, 10, 4, 4, 10, 80, 15, 15, 15, 10], 값은 매번 변경됨
버블정렬
: 배열의 길이가 n일 때, 배열의 첫 번째부터 n-1까지의 요소에 대해 근접한 값과 크기를 비교하여 자리바꿈을 반복하는 것
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
// 0~30 사이의 난수 10자리로 이루어진 numArr 배열 생성
int[] numArr = new int[10];
for(int i=0; i<numArr.length; i++) {
int n = (int)(Math.random()*30);
numArr[i] = n;
}
System.out.println(Arrays.toString(numArr));
// numArr 배열의 버블정렬
// 10개의 숫자가 있는 경우 9번만 비교하면 되기 때문에 numArr.length-1
for(int i=0; i<numArr.length-1; i++) {
boolean changed =false; // 매 반복마다 changed를 false로 초기화
//반복할수록 비교해야하는 범위가 줄기때문에 numArr.length-1-i
for(int j=0; j<numArr.length-1-i; j++) {
if(numArr[j] > numArr[j+1]) {
int tmp = numArr[j];
numArr[j] = numArr[j+1];
numArr[j+1] = tmp;
changed = true;
}
}
if(!changed) break; // 자리바꿈이 없으면 반복문 벗어남
}
System.out.println(Arrays.toString(numArr));
// 자리바꿈이 없어서 반복문이 끝나면 정렬된 배열 보여줌
}
}
//[24, 26, 9, 29, 16, 12, 19, 2, 7, 18]
//[2, 7, 9, 12, 16, 18, 19, 24, 26, 29]
다차원 배열의 활용
public class Test {
public static void main(String[] args) {
// 1열은 수학점수, 2열은 영어점수, 3열은 수학점수 그리고 각 행은 각 학생들의 점수
int[][] score = {
{100,100,100}
,{90,80,95}
,{88,96,100}
,{40,80,50}
,{30,50,60}
};
System.out.println("번호 국어 영어 수학 총점 평균");
System.out.println("============================");
//과목별 총점
int korTotal=0, engTotal=0, mathTotal=0;
for(int i=0; i<score.length; i++) {
int sum=0;
float avg=0.0f;
korTotal += score[i][0];
engTotal += score[i][1];
mathTotal += score[i][2];
System.out.printf("%d", i+1);
for(int j=0; j<score[i].length;j++) {
sum += score[i][j];
System.out.printf("%6d", score[i][j]);
}
avg = sum/(float)score[i].length;
System.out.printf("%5d %5.1f%n", sum, avg);
//평균 첫째자리 수까지(.1f)
}
System.out.println("============================");
System.out.printf("총점: %2d %4d %5d%n", korTotal, engTotal, mathTotal);
}
}
//번호 국어 영어 수학 총점 평균
//============================
//1 100 100 100 300 100.0
//2 90 80 95 265 88.3
//3 88 96 100 284 94.7
//4 40 80 50 170 56.7
//5 30 50 60 140 46.7
//============================
//총점: 348 406 405
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 영어단어 뜻 맞추는 프로그램
String[][] words = {
{"chair", "의자"}
,{"computer", "컴퓨터"}
,{"integer", "정수"}
};
Scanner scanner = 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 = scanner.nextLine();
if(tmp.equals(words[i][1])) {
System.out.println("정답입니다.");
}else {
System.out.println("틀렸습니다. 정답은 " + words[i][1] + "입니다.");
}
}
}
}
//Q.1 chair의 뜻은?의자
//정답입니다.
//Q.2 computer의 뜻은?컴퓨터
//정답입니다.
//Q.3 integer의 뜻은?오답
//틀렸습니다. 정답은 정수입니다.
Arrays로 배열 다루기
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr1 = {1,4,6,0,2,3,5};
int[][] mulArr1 = {
{1,4}
,{0,2}
,{3,5}};
int[][] mulArr2 = {
{1,4}
,{0,2}
,{3,5}};
//배열의 복사 - copyOf, copyOfRange
int[] arr2 = Arrays.copyOf(arr1, arr1.length); //arr 배열 그대로 복사
int[] arr3 = Arrays.copyOf(arr1, 3); //arr배열 3번째 index까지 복사
int[] arr4 = Arrays.copyOfRange(arr1, 2, 4); //arr배열 2번째에서 4번재 index복사
//배열의 출력 - Arrays.toString, Arrays.deepToString
System.out.println(Arrays.toString(arr2));
System.out.println(Arrays.toString(arr3));
System.out.println(Arrays.toString(arr4));
System.out.println(Arrays.deepToString(mulArr1));
//배열의 비교 - Arrays,equals, Arrays.deepEquals
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.deepEquals(mulArr1, mulArr2));
//배열의 정렬 - sort()
Arrays.sort(arr1);
System.out.println(Arrays.toString(arr1)); //오름차순 정렬
}
}
//[1, 4, 6, 0, 2, 3, 5]
//[1, 4, 6]
//[6, 0]
//[[1, 4], [0, 2], [3, 5]]
//true
//true
//[0, 1, 2, 3, 4, 5, 6]
'Backend > Java' 카테고리의 다른 글
Java 기초 문법 : 클래스간의 관계 - 상속과 포함 (0) | 2024.06.09 |
---|---|
Java 기초 문법 : 오버로딩에 대해서 (0) | 2024.05.26 |
Java 기초 문법 : 필드(field)와 메서드(method) (0) | 2024.05.21 |
Java 기초 문법 : 클래스와 객체 그리고 인스턴스 (0) | 2024.05.21 |
Java 기초 문법 : 배열 (1) | 2024.05.15 |
Java 기초 문법 : break, continue (0) | 2024.05.12 |
Java 기초 문법 : 반복문(for, while) (0) | 2024.05.12 |
Java 기초 문법 : 조건문 (if, switch) (0) | 2024.05.12 |