티스토리 뷰
Chapter 5. 배열
▶ 학습 목표
: 배열을 알고 반복문 조건문 들과 함께 활용하여 사용할 수 있다.
- 배열
: 같은 타입의 변수를 하나의 묶음으로 관리하는 것이다.
묶음으로 관리하여 편리하고 효율적이다.
- 배열의 사용
일반변수 선언
int a;
배열변수 선언
int[] x;
int y[];
//둘 다 사용가능
일반 변수 초기화
a =3;
배열 초기화
: 배열 길이 지정
x = new int[3]; //몇개를 묶을것이다.
배열 초기화
:배열 길이와 값을 한번에 지정
int z[] = {1,2,3}; // 따로 선언이 되지 않음
int w[] = new int[] {1,2,3};
- 인덱스(index)
: 배열의 공간마다 붙여진 번호이다.
인덱스는 0번부터 번호가 시작된다.
ex) 배열 값을 직접 입력 해준 경우의 코드
package chapter5;
public class test5_1
{
public static void main(String[] args)
{
int[] student=new int[3];
System.out.println("현재 자동으로 초기화된 값 : " +student[0]);
student[0]=30;
student[1]=20;
student[2]=10;
System.out.println("현재 첫번째 요소의 값 = "+student[0]);
}
}
ex) for문 이용해서 배열값 입력한 경우의 코드
package chapter5;
public class test5_1
{
public static void main(String[] args)
{
int[] student=new int[3];
int i;
System.out.println("현재 자동으로 초기화된 값 : " +student[0]);
for(i=0; i<student.length; i++)
{
student[i]=i;
System.out.println(student[i]);
}
System.out.println("현재 첫번째 요소의 값 = "+student[0]);
}
}
ex) 배열을 선언한 후 Arrays.toString()을 사용하여 배열구하는 경우 코드
package chapter5;
import java.util.*;
public class test5_2 {
public static void main(String[] args)
{
int[] a =new int[] {10,20,4,25,18};
int[] b= {1,2,3,4,5,6,7};
int[] c= new int[10];
for(int i=0; i<c.length; i++)
{
c[i]=i;
}
for(int i=0; i<c.length; i++)
{
System.out.println(c[i]);
}
System.out.println("");
System.out.println(Arrays.toString(c));
//Arrays.toString.()사용
}
}
0123456789
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
*Arrary.toString(배열이름) 사용할 경우 import java.util.Arrays; 작성 필요함
ex) 시험 점수의 평균을 구하는 코드
package chapter5;
public class test5_3 {
public static void main(String[] args)
{
int[] student = {100,95,90,88,93};
int sum = 0;
for(int i=0; i<student.length; i++)
{
sum+=student[i];
}
System.out.println("시험 점수의 평균 : " +sum/(float)student.length); //sum/5.0f;
}
}
평균을 나누어주는 경우 정수끼리 나누기때문에 정수값이 나온다.
실수값으로 구하고자하는 경우 (float)student.length or sum/5.0f; 를 사용하여 형변환해 준다.
- 다차원 배열
: 2차원 이상의 배열을 다차원 배열이라고 한다.
(= 일차원 배열이 하나의 빌라에 호수라면 다차원 배열은 아파트의 동, 호수)
2차원 배열의 선언과 생성
int[][] x;
int y[][];
//둘 다 사용가능
타입[][] x = new 타입[][];
int [][] x = new int[3][3];
String [][] y = new String[3][5];
- 2차원 배열의 인덱스
: 1차원 배열과 같이 0부터 시작한다.
ex) int x[4][3]
[0][0] | [0][1] | [0][2] | [0][3] |
[1][0] | [1][1] | [1][ 2] | [1][3] |
[2][0] | [2][1] | [2][2] | [2][3] |
ex) 2차원 배열 순서대로 출력하는 코드
package chapter5;
public class test5_5 {
public static void main(String[] args)
{
int [][] test = {{1,2},{3,4},{5,6},{7,8},{9,10}};
for(int i=0; i<test.length; i++)
{
for(int j=0; j<test[i].length; j++)
{
System.out.println(test[i][j]);
}
}
}
}
- foreach
: 배열을 순서대로 입출력시 반복문보다 편리하게 작업하는 방법
for(배열의 타입 변수이름 : 배열이름)
{
//실행구문
}
ex) foreach문을 사용하여 배열 출력
package chapter5;
import java.util.Scanner;
public class test5_6 {
public static void main(String[] args)
{
String[] a = {"Java", "Hello", "Programming"};
for(String i :a)
{
System.out.println(i);
}
int[] b= {1,2,3,4,5};
for(int i :b)
{
System.out.println(i);
}
}
}
Java
Hello
Programming
12345
ex) 앞뒤 숫자 비교하여 내림차순으로 정렬하여 출력하는 코드
package test_coding;
import java.util.Arrays;
import java.util.Scanner;
public class cal2 {
public static void main(String[] args)
{
int[] group = {9,54,2,58,99,45,87};
//0~6까지 반복, 7번반복
for(int i=0; i<group.length;i++) {
for(int j=i+1; j<group.length;j++) {
if(group[i]<group[j]) {
int tmp = group[i];
group[i] = group[j];
group[j] = tmp;
}
}
}
System.out.println(Arrays.toString(group));
}
}
[99,87,58,54,45,9,2]
group[i] group[j]를 비교하여 큰수가 앞으로 오도록 내림차순하여 정렬한다.
이때 j는 i+1 인데, 앞 뒤 숫자를 비교하는 것이기 때문에 전에서 비교한 숫자나 같은 자리의 숫자는 비교하지 않아도 되기 때문에 i+1이다.
자리의 수를 바꾸는 경우 변수는 변화하는 수로 덮어쓰는 성질이 있기 때문에 int tmp라는 변수를 생성하여 임의로 저장하여 보관 후 다시 대입해서 값을 변경한다.
ex) 앞뒤 숫자 비교하여 오름차순으로 정렬하여 출력하는 코드
package chapter5;
public class test5_7
{
public static void main(String[] args)
{
int []a= {80,40,50,70,100,35,25};
for(int i=0; i<a.length; i++)
{
for(int j=i+1; j<a.length; j++)
{
if(a[i]>a[j])
{
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
for(int k=0; k<a.length; k++)
{
System.out.print(" " +a[k]);
}
}
}
이전의 코드와 다르게 내림차순으로 정렬했다.
출력시 for문을 사용하여 출력을 해준다.
25 35 40 50 70 80 100
ex) 앞뒤 숫자 비교하여 오름차순으로 정렬하여 출력하는 코드(이전과 출력시 코드 다름)
package chapter5;
public class test5_4
{
public static void main(String[] args)
{
int []a= {80,40,50,70,100,35,25};
for(int i=0; i<a.length; i++)
{
for(int j=i+1; j<a.length; j++)
{
if(a[i]>a[j])
{
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}
}
for(int k:a)
{
System.out.print(" " +k);
}
}
}
이전의 코드와 다르게 출력시 foreach문을 사용하여 출력했다.
25 35 40 50 70 80 100
'코딩 > JAVA' 카테고리의 다른 글
[2주차 2일] Chapter 6. 클래스에 대하여 (0) | 2023.10.17 |
---|---|
배열 값 입력 받아 출력 (1) | 2023.10.17 |
학점 계산기(Scanner, if) (0) | 2023.10.16 |
시작하는 수부터 끝 수까지 더하기(Scanner, if) (0) | 2023.10.16 |
계산기 프로그램(while, Scanner, if-else if) (0) | 2023.10.16 |
- Total
- Today
- Yesterday