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++;
}
}
}