Java - 배열

2025. 1. 20. 11:57·Java

1. 1차 배열

package basic_html;
import java.util.Arrays;

public class arr1 {

	public static void main(String[] args) {
		int a[] = {1, 2, 3, 4, 5};
		int[] b = {10, 20, 30, 40, 50};
		System.out.println(a.length);
		System.out.println(a[3]);
		System.out.println(Arrays.toString(a));
		
		String c[] = {"홍길동", "이순신", "강감찬"};
		System.out.println(Arrays.toString(c));

		//int data[] = new int[4];
		Integer data[] = new Integer[4];
		data[0] = 100;
		data[1] = 200;
		//data[2] = 300;
		data[3] = 400;
		System.out.println(Arrays.toString(data));
		
		
		String user[] = new String[3];
		user[1] = "홍길동";
		System.out.println(Arrays.toString(user));
		
		Object member[] = {"홍길동", 25,"강감찬",30};
		System.out.println(Arrays.toString(member));
		
		Object product[] = new Object[3];
		product[0] = "냉장고";
		product[1] = 500000;
		System.out.println(Arrays.toString(product));
	}
}
  • 선언
    • 자료형 변수명[] = {값};
    • 자료형[] 변수명 = {값};
  • 배열은 0부터 시작
  • toString : 문자로 변환
  • Array : 클래스 배열
  • Arrays.toString() : 원시배열형태
  • Integer 배열 선언 방식이 라이브러리 형태로 사용은 안됨
    • int는 배열이 비어있을 경우의 값 0
    • Integer는 배열이 비어있을 경우 null
  • Object : 복합형태 자료형 (숫자, 실수, 문자...)
package basic_html;

import java.util.Arrays;

public class arr2 {
	public static void main(String[] args) {
		arr2_box ab = new arr2_box();
		ab.arrbox();
		int backdata[] = { 100, 200, 300 };
		ab.arrbox2(backdata);	//해당 메소드에 배열 변수값을 전달
	}
}

class arr2_box {
	int data[]; // 배열을 사용하기 위한 변수만 선언
	String basket[] = new String[5]; // 5개의 데이터 방을 생성한 필드값
	int f;

	public void arrbox() {
		/*
		 * this.data = new int[3]; //{}안쓰기 
		 * this.data[0] = 500; 
		 * this.data[1] = 1000;
		 * this.data[2] = 1500;
		 */

		this.data = new int[] { 500, 1000, 1500, 2000 };
		this.f = 0;
		while (this.f < this.data.length) {
			System.out.println(this.data[this.f]);
			f++;
		}
		// 필드에 선언되어 있는 배열을 new를 사용시 새롭게 배열 구성됨
		this.basket = new String[] { "a", "b", "c" };
		System.out.println(Arrays.toString(this.basket)); // 선언은 5개했는데 왜 3개만 나오냐면 new 써서 재선언했기때문에 새로운놈이 돼버림
	}

	public void arrbox2(int z[]) {	//해당 변수의 자료형 및 배열 기호를 적용하여 매개변수로 값을 받음
		System.out.println(Arrays.toString(z));
	}
}

배열 전역변수 사용법

 

😊응용문제

int data[] = {5000,4000,8000,10000,4000};
해당 배열의 모든 값을 다 합한 결과를 출력하는 코드를 작성
int data[] = {5000,4000,8000,10000,4000};
		int i = 0;
		int sum = 0;
		while(i<data.length) {
			sum += data[i];
			i++;
		}
		System.out.println(sum);

 

Scanner를 이용하여 다음에 해당되는 값이 정상적으로 배열에 입력되도록 코드를 작성
총 4회의 질문을 하게됩니다.
"입금하실 금액을 입력하세요 : "
최종 결과는 총 4회 입금된 금액을 배열로 출력
class arr3_box {
	Scanner sc = null;
	int money[];

	public void box3() {
		this.sc = new Scanner(System.in);
		int i = 0;
		this.money = new int[4];

		while (i < this.money.length) {
			System.out.println("입금하실 금액을 입력하세요 : ");
			this.money[i] = this.sc.nextInt();
			i++;
		}
		System.out.println(Arrays.toString(this.money));
		this.sc.close();
	}
}

 

2. 2차배열

package basic_html;
import java.util.Arrays;

public class arr4 {

	public static void main(String[] args) {
		// 2차배열 선언방식
		String user[][] = { { "국어", "영어", "일본어" }, { "80", "90", "100" } };
		// 출력
		System.out.println(user[0][2] + user[1][2]);
		// 그룹개수
		System.out.println(user.length);
		// 그룹의 데이터 개수
		System.out.println(user[0].length);

		int adata[][] = new int[2][2]; // 그룹2개, 데이터2개
		adata[0][0] = 50;
		adata[0][1] = 150;
		adata[1][0] = 250;
		adata[1][1] = 350;

		System.out.println(Arrays.toString(adata)); // 깨져서 나옴
		System.out.println(Arrays.deepToString(adata));
		
		arr4_box ab = new arr4_box();
		ab.arrbox();
	}
}
/*
 * 할인율 공식 적용 
 * 10000원 20% 할인 
 * int a = 10000; 
 * int b = 20;
 * int result = a - ((a * b) / 100);
 */
class arr4_box {
	// int[][] data; 옛날방식 똑같음
	int data[][]; // 2차 배열 변수 생성

	public void arrbox() {
		this.data = new int[][] { // 필드에 있는 2차배열에 값을 적용
				{ 100, 200, 300, 400 }, 
				{ 10, 5, 8, 4 } 
				};
		//2차배열에 적용된 금액으로 할인율을 적용하여 출력하는 코드
		int f = 0;
		int sales = 0;
		while(f < this.data[0].length) {
			sales = this.data[0][f] - ((this.data[0][f]*this.data[1][f])/100);
			System.out.println(sales);			
			f++;
		}		
	}
}
  • Arrays.toString() : 1차배열을 문자로 출력
  • Arrays.deepToString() : 다차원배열을 문자로 출력
package basic_html;
import java.util.Arrays;

public class arr5 {

	public static void main(String[] args) {
		String data1[] = { "hong", "kim", "park", "jang" }; // 사용자 id
		String data2[] = { "1520", "1000", "3600", "4100" }; // 포인트
		// 위의 1차배열을 2차배열 data3으로 생성하시오
		String data3[][] = new String[2][data1[0].length()];
		int i = 0;
		while (i < data1.length) {
			data3[0][i] = data1[i];
			data3[1][i] = data2[i];
			i++;
		}
		System.out.println(Arrays.deepToString(data3));
	}
}
  • 1차 배열 -> 2차 배열

😊응용문제

1차배열 -> 2차배열 변환
* 90,22,16,13,8,42,49,37,1,9
* 짝수 5개 홀수 5개를 각각 2차 배열로 짝수홀수그룹으로 나누어 출력
* [[90,22,16,8,42],[13,49,37,1,9]] 
		int arr1[] = {90,22,16,13,8,42,49,37,1,9};
		int arr2[][] = new int[2][5];
		
		i = 0;
		int j=0, k=0;
		while(i<arr1.length) {
			if(arr1[i]%2==0) {	//짝수
				arr2[0][j]=arr1[i];
				j++;
			}else {		//홀수 
				arr2[1][k]=arr1[i];
				k++;
			}			
			i++;
		}
		System.out.println(Arrays.deepToString(arr2));
Scanner를 이용하여 혈액형을 검색시 해당 사용자명과 통신사가 출력되도록 코드 작성 
예시) 찾고자 하는 혈액형을 입력하세요 : O
이가연 O KT
package basic_html;
import java.util.Arrays;
import java.util.Scanner;

public class arr6 {
	public static void main(String[] args) {
		arr6_box ab = new arr6_box();
		// 1차 배열을 return 받을때도 배열 자료형을 입력 후 출력
		String[] result = ab.alldata("a123456");
		System.out.println(Arrays.toString(result));

		final String data[][] = { // 데이터 변경 불가능
				{ "박선하", "박준법", "오민영", "이가연", "정성문" }, { "A", "B", "AB", "O", "A" },
				{ "SKT", "KT", "LGT", "KT", "알뜰폰" } };
		ab.search(data);
	}
}

class arr6_box {
	Scanner sc = null;
	String blood = "";

	String[] user = null;

	public void search(String data[][]) { // 해당 메소드에 데이터 출력
		this.sc = new Scanner(System.in);
		System.out.println("찾고자 하는 혈액형을 입력하세요 : ");
		this.blood = this.sc.next();
		int i = 0;
		while (i < data[0].length) {
			int ii = 0;
			while (ii < data.length) {
				if (data[1][i].equals(blood)) {
					System.out.print(data[ii][i]+" ");
				}
				ii++;
			}
			if (data[1][i].equals(blood)) {
				System.out.println(" ");
			}	
			i++;
		}		
		this.sc.close();
	}

	// 1차 문자배열 return 메소드
	public String[] alldata(String key) { // 배열 값을 반환하는 return 메소드
		if (key.equals("a123456")) {
			this.user = new String[] { "구나영", "김선익", "김수영", "김준수", "황재준" };
		}
		return this.user;
	}
}

 

해당 배열 상품에대한 결과값에 맞는 코드를 작성
외부 클래스를 이용하여 다음과 같은 결과가 나올 수 있도록 출력
예시)
LG냉장고
500000
5% : 475000원
LG에어컨
1900000
10% : 1710000원
코웨이정수기
220000
5% : 1125000원
package basic_html;
public class arr7 {
	public static void main(String[] args) {
		final String product[][] = {
				{"LG냉장고","삼성가습기","LG에어컨","삼성에어컨","코웨이정수기"},
				{"500000","300000","1900000","1250000","220000"},
				{"Y","N","Y","Y","N"},
				{"5","15","10","10","5"}				
		};	
		arr7_box ab = new arr7_box();
		ab.sale(product);
	}
}

class arr7_box{	
	public void sale(String product[][]) {
		int nsale = 0;
		int nprice = 0;
		int saleprice = 0;
		int i = 0;
		
		while(i<product[0].length) {
			
			int ii=0;
			while(ii<product.length) {
				if(product[2][i]=="Y") {
					if(ii<=1) {
					System.out.println(product[ii][i]);
					}
					else if(ii == 3) {
						nprice = Integer.parseInt(product[1][i]);
						nsale = Integer.parseInt(product[ii][i]);
						saleprice = nprice -(nprice * nsale / 100);
						System.out.println(product[ii][i]+"% : "+ saleprice + "원" + "\n");
					}					
				}		
				ii++;
			}			
			i++;
		}
	}
}
외부 메소드를 이용하여 다음과 같이 결과가 나오도록 코드를 작성하시오
메뉴 : 1. 고객명, 2. 레벨 검색
고객명을 입력하세요 : 유관순 유관순 골드 3000 20
레벨을 입력하세요 : 일반 홍길동 일반 1500 5 이산 일반 1200 5

final String userpart[][][] = { { { "홍길동", "강감찬", "유관순", "이순신", "이산" }, { "일반", "실버", "골드", "실버", "일반" } },
{ { "1500", "2500", "3000", "1000", "1200" }, { "5", "10", "20", "10", "5" } } };
public class arr7 {

	public static void main(String[] args) {
		final String userpart[][][] = { { { "홍길동", "강감찬", "유관순", "이순신", "이산" }, { "일반", "실버", "골드", "실버", "일반" } },
				{ { "1500", "2500", "3000", "1000", "1200" }, { "5", "10", "20", "10", "5" } } };
		ab.members(userpart);
	}
}
class arr7_box {
	Scanner sc = null;
	int mnum = 0;
	String search = null;

	public void members(String userpart[][][]) {
		this.sc = new Scanner(System.in);
		System.out.println("메뉴 : 1. 고객명, 2. 레벨 검색");
		this.mnum = sc.nextInt();

		if (this.mnum == 1) {
			this.schname(userpart);
		} else if (this.mnum == 2) {
			this.schlevel(userpart);
		} else {
			System.out.println("숫자를 잘못입력하셨습니다. 종료합니다.");
		}
	}

	protected void schname(String userpart[][][]) {
		System.out.println("고객명을 입력하세요 : ");
		this.search = sc.next();
		int i = 0;
		while (i < userpart[0][0].length) {
			if (this.search.equals(userpart[0][0][i])) {
				this.prtmem(userpart, userpart[0][0][i]);
			}
			i++;
		}
	}

	protected void schlevel(String userpart[][][]) {
		System.out.println("레벨을 입력하세요 : ");
		this.search = sc.next();		
		int i = 0;
		while (i < userpart[0][0].length) {
			if (this.search.equals(userpart[0][1][i])) { // 레벨이 같으면
				this.prtmem(userpart, userpart[0][0][i]); // 해당 레벨의 멤버 출력
			}
			i++;
		}
	}

	protected void prtmem(String userpart[][][], String mname) {
		int i = 0;
		while (i < userpart[0][0].length) {
			if (mname.equals(userpart[0][0][i])) {
				int j = 0;
				while (j < userpart.length) {
					int k = 0;
					while (k < userpart[0].length) {
						System.out.println(userpart[j][k][i]);
						k++;
					}
					j++;
				}
			}
			i++;
		}
	}
}
저작자표시 비영리 변경금지 (새창열림)
'Java' 카테고리의 다른 글
  • Java - DTO 활용
  • Java - 클래스 배열
  • 복습 8 - java 기초
  • Java 기초 4
9na0
9na0
응애
  • 9na0
    구나딩
    9na0
  • 전체
    오늘
    어제
    • 분류 전체보기 (211)
      • Web (118)
      • Java (28)
      • 데이터베이스 (14)
      • 세팅 (12)
      • 과제 (3)
      • 쪽지시험 (2)
      • 정보처리기사 (4)
      • 서버 (25)
  • 블로그 메뉴

    • 링크

      • 포폴
      • 구깃
    • 공지사항

    • 인기 글

    • 태그

      net2
      re2
      notice_writer
      file25
      noticewriteok
      java_io1~10
      io_dto
      file25_t
      net1
      macbook pro m4
      exam1_1~10
      re_java10
      net5~10
      Oracle
      net3
      file24
      ab1
      spring-boot
      net4
      datalist
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    9na0
    Java - 배열
    상단으로

    티스토리툴바