반응형
배열
- 배열은 객체다. 객체란 속성과 메소드를 가지고 있는데, 배열은 유일하게 속성만 가지고 있음.
- 배열은 동일한 타입의 데이터를 하나의 묶음으로 관리하는 데이터타입
- 배열의 속성
- length 길이를 int로 반환함
- 객체의 속성과 메소드 등을 호출할 때는 . 을 사용
- 배열명.속성명 (배열.length)
- 배열의 특징
- 처음 생성할 때 길이를 적어줘야 함.
- 배열의 길이는 수정 불가.
- 배열의 시작은 0부터.
- index (주소값, 위치값)
- 배열 선언
int arr1[] = new int[5]; // arr01을 5만큼 나눠서 각각 값 저장
int arr2[] = null; // 선언은 했지만 값이 없는 상태
System.out.println(arr1);
System.out.println(arr1[0]); // index
System.out.println(arr1[1]); // 출력, 활용에 쓰는 값 = index
System.out.println(arr1[2]); // 0 1 2 3 4 5
System.out.println(arr1[3]);
System.out.println(arr1[4]);
System.out.println(arr1[5]); // 마지막 index는 길이 -1
- 배열 값 저장
배열(객체) 생성 시 기본값으로 초기화됨.
- 배열 기본값
- 정수 : 0
- 실수 : 0.0
- 캐릭터 : (공백)
- 논리타입 : 거짓
- R타입 : null
* 메소드
- toCharArray() // 값을 한 글자씩 잘라서 출력
- Arrays.toString() : 배열의 내용을 문자열로 변환하여 반환하는 메소드
- Integer.parseInt() : String 타입의 문자열을 정수로 변환
double d1[] = new double[3];
System.out.println(d1[2]); // 마지막 index는 길이 - 1
// 길이 - 아래의 3개가 같음
System.out.println(d1.length); // d1의 길이 값
System.out.println(d1[d1.length - 1]);
System.out.println(d1[2]);
// 값 대입 (길이만큼 입력 가능)
d1[0] = 123;
d1[1] = 120;
d1[2] = 300;
System.out.println(d1[0]);
System.out.println(d1[1]);
System.out.println(d1[2]);
for (int i = 0; i < d1.length; i++) {
d1[i] = i + 100;
System.out.println(d1[i]);
for (int j = 0; j < d1.length; j++) {
System.out.println(d1[i]);
}
String arr1[] = {"홍길동", "김길동", "이길동"}; // 들어오는 값에 따라서 길이가 저장됨.
String arr1[] = new String[] {"홍길동", "김길동", "이길동"};
package dec07;
import java.util.Arrays;
public class Array02 {
public static void main(String[] args) {
String arr1[] = new String[] {"홍길동", "김길동", "이길동"};
String name1 = arr1[0];
System.out.println(name1); // name1에 홍길동이 저장 = 홍길동이 2개가 된 상태
System.out.println(Arrays.toString(arr1));
char chArray[] = name1.toCharArray();
System.out.println(Arrays.toString(chArray));
// arr1 배열에 있는 첫번째 문자의 길이 구하기 (메소드와 변수 구분해야 함)
System.out.println(name1.length()); // 메소드 표시 붙음
System.out.println(chArray.length); // 배열 변수명
System.out.println(arr1[0].length());
}
}
로또 번호 생성기
int num1[] = new int[6];
System.out.println("행운의 로또 번호");
for (int i = 0; i < num1.length; i++) {
num1[i] = (int)(Math.random() * 45)+1;
}
System.out.println(Arrays.toString(num1));
-------------------------------------------
int lotto[] = new int[6];
Random random = new Random();
for (int i = 0; i < lotto.length; i++) {
lotto[i] = random.nextInt(45) + 1; // 1~45
}
System.out.println(Arrays.toString(lotto));
- 피보나치수열 1, 1, 2, 3, 5, 8
int numbers[] = new int[10];
// 피보나치 수열 초기화
numbers[0] = 1;
numbers[1] = 2;
for (int i = 2; i < numbers.length; i++) {
numbers[i] = numbers[i - 1] + numbers[i - 2];
}
System.out.println(Arrays.toString(numbers));
--------------------------------------------------
int numbers[] = new int[10];
// 피보나치 수열 초기화
numbers[0] = 1;
numbers[1] = 2;
for (int i = 0; i < numbers.length-2; i++) {
numbers[i + 2] = numbers[i] + numbers[i + 1]; // for문 다르게
}
System.out.println(Arrays.toString(numbers));
* * * 자꾸 실수하는 부분 * * *
for문 결과 출력할 때, System.out.println 위치 주의할 것.
- 전체 결과가 필요할 때 : for문 밖에 System.out.println()을 놓아서 한 번에 전체 결과를 출력.
- 각 단계의 결과를 보고 싶을 때 : for문 안에 System.out.println()을 넣어서 각 단계의 결과를 확인.
Integer.parseInt()
String 타입의 문자열을 정수로 변환
+ 연결이 되는 경우
- 문자 + 숫자
- 숫자 + 문자
- 문자 + 문자
- 숫자 + 숫자 = 덧셈 결괏값
text = 5 + ""; // 숫자 + "" 문자 연결 = 문자열로 변경 (="5", 값은 5)
System.out.println(text);
text = 5 + 5 + ""; // 10
System.out.println(text);
text = 5 + "" + 5; // 55
System.out.println(text);
text = "" + 5 + 5; // 55
System.out.println(text);
- 과목 별로 점수 입력하면 총점과 평균 출력
Scanner sc = new Scanner(System.in);
String msg = " 점수입력";
String subject[] = {"자바", "jsp", "spring"};
// 점수를 저장하는 배열
int score[] = new int[subject.length + 1];
for (int i = 0; i < subject.length; i++) {
System.out.println(subject[i] + msg);
score[i] = sc.nextInt();
}
score[score.length - 1] = score[0] + score[1] + score[2];
System.out.println("* 총점 : " + score[score.length - 1]);
System.out.println("* 평균 : " + score[3] / 3);
- 게임 승패 승률 출력
* 사용자가 원하는 게임 수만큼 게임을 진행하고 그 승패 결과를 배열에 저장, 승률을 출력하는 프로그램 제작.
import java.util.Scanner;
public class Array06 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int input, com, game[];
float win = 0; // 승률 저장
int winCount = 0;
System.out.print("환영합니다~ 몇 게임 보고 오셨어요? ");
game = new int[sc.nextInt()];
for (int i = 0; i < game.length; i++) {
System.out.println("게임 스타트");
System.out.println("1. 가위\t 2.바위\t 3.보");
input = sc.nextInt();
// 가위바위보 게임 (1 가위, 2 바위, 3 보)
com = (int) (Math.random() * 3 + 1);
if (com == 1 && input == 3
|| com == 2 && input ==1
|| com == 3 && input ==2) {
System.out.println("*** 저런....컴퓨터가 이겼습니다..\n");
} else if(com == 1 && input ==2
|| com == 2 && input == 3
|| com == 3 && input == 1) {
System.out.println("*** 와아~ 당신이 이겼습니다!!!!!!! ㅊㅋㅊㅋ\n");
winCount++;
} else if(input == com) {
System.out.println("*** 두둥! ~무승부~\n");
}
}
// 승률 통계 (승 1, 패 0, 무승부 0)
win = (float) winCount / game.length * 100;
System.out.println("승률 : " + win + "%");
sc.close();
}
}
- 버블정렬
숫자를 크기 순으로 정렬하는 알고리즘
public static void main(String[] args) {
int i, j; // 반복문에서 사용할 변수
int temp; // 값 교환할 때 사용할 임시 변수
int a[] = { 75, 95, 85, 100, 50 }; // 정렬할 배열
for (i = 0; i < 4; i++) {
for (j = 0; j < 4 - i; j++) {
if (a[j] > a[j + 1]) {
temp = a[j]; // 값을 비교해서 자리를 바꿈
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; i < 5; i++) {
System.out.println(a[i]); // 정렬된 배열 출력
}
}
}
public static void main(String[] args) {
int i, j;
for (j = 0, i = 0; i <= 5; i++) { // 0으로 초기화
j += i; // i의 값을 다 더한 값 = j
System.out.print(i); // 0
if (i == 5) {
System.out.print("=");
System.out.print(j);
} else {
System.out.print("+"); // 0+1+2+3+4+5=15
// 배열
- 같은 타입의 값을 하나의 변수에 넣어서 관리.
- 같은 타입, 동일 관리, 주소 호출
- ex) int, 10칸, arr01 = int arr01[] = new int[10];
List
List<Integer> list = new ArrayList<Integer>();
list.add(10);
System.out.println(list.size()); // 크기
System.out.println(list); // list = 값 그대로 보여줌
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
배열이 생각보다 어렵다!!!
자바를 배우면서 큰 고비가 3번쯤 온다던데 그 첫 번째가 바로 이 배열 부분이라고 한다.
내 머리 속의 로직을 컴퓨터로 바꿔야한다.
반응형
'개발 공부 Today I Learned' 카테고리의 다른 글
[국비 15일차 TIL] 자바 반복문 while, do-while, switch, 동적가변배열 (1) | 2023.12.11 |
---|---|
[국비 14일차 TIL] JAVA 2차원 배열 (1) | 2023.12.08 |
[국비 12일차 TIL] 자바 반복문 for문 (1) | 2023.12.06 |
[국비 11일차 TIL] JAVA 연산자, 조건문 if (2) | 2023.12.05 |
[국비 10일차 TIL] JAVA 클래스, 메소드, 명령어, 데이터타입 (1) | 2023.12.04 |
댓글