반응형

1. Arrays.toString()
1차원 배열 까지는 toString()메소드로 문자열 출력. 하지만 2차원 이상의 배열은 deepToString()메소드로 출력한다. 

public class Sample1 {
	public static void main(String[] args) {
		int[] num1 = {1,2,3};
		int[][] num2 = {
				{1,2,3},{4,5,6},{7},{8,9,10}
		};
		
		System.out.println(num1 + " -배열 자체는 내용을 확인할 수 없다. ");
		System.out.println(Arrays.toString(num1) + " - Arrays.toString()");//1차원 배열
		System.out.println(Arrays.deepToString(num2) + " - Arrays.deepToString()"); //2차원 배열 출력		
	}
}
[I@2f92e0f4 -배열 자체는 내용을 확인할 수 없다. 
[1, 2, 3] - Arrays.toString()
[[1, 2, 3], [4, 5, 6], [7], [8, 9, 10]] - Arrays.deepToString()

 

2. Arrays.equals()
배열간의 내용이 같은지를 비교. 같으면 true, 다르면 false값 반환

import java.util.Arrays;

public class Sample1 {
	public static void main(String[] args) {
		
		int[] correct = {1,2,3,4,1,4,2,5,2};
		
		int[][] answers = {
				{1,2,3,4,5,6,2,5,2},
				{1,1,5,6,8,9,2,5,2},
				{2,3,5,6,5,7,2,5,2},
				{1,2,3,4,1,4,2,5,2},//정답
				{2,3,6,7,5,6,2,5,2},				
		};
		
		//정답찾기
		int no = 0; //학생번호
		for(int[] answer: answers) {
			no++;
			if(Arrays.equals(correct, answer)) {
				System.out.printf("%d번 학생이 맞췄습니다.\n", no);
			}else {
				System.out.printf("%d번 학생은 틀렸습니다.\n", no);
			}			
		}
	}
}
1번 학생은 틀렸습니다.
2번 학생은 틀렸습니다.
3번 학생은 틀렸습니다.
4번 학생이 맞췄습니다.
5번 학생은 틀렸습니다.

 

3. Arrays.copyOf()
배열을 똑같이 복사하되, 지정한 길이까지 정해서 복사할 수 있다, 무조건 처음부터 입력한 배열의 길이까지 복사.
만약 시작의 위치도 정해서 복사하고 싶다면 Arrays.copyOfRange() 메소드를 활용한다.

import java.util.Arrays;

public class Sample1 {
	public static void main(String[] args) {
		
		String[] name1 = new String[] {"steve" , "tom", "james", "mike", "bob", "oliver"};
		
		String[] name2 = Arrays.copyOf(name1, name1.length-1);
		String[] name3 = Arrays.copyOf(name1, name1.length-2);
		String[] name4 = Arrays.copyOf(name1, name1.length-3);
		String[] name5 = Arrays.copyOf(name1, name1.length-4);
		
		System.out.println(Arrays.toString(name1));
		System.out.println(Arrays.toString(name2));
		System.out.println(Arrays.toString(name3));
		System.out.println(Arrays.toString(name4));
		System.out.println(Arrays.toString(name5));
		
		System.out.println("\n첫 번째와 마지막 요소를 제거하고 복사하여 출력");
		String[] name6 = Arrays.copyOfRange(name1, 1, name1.length-1);
		System.out.println(Arrays.toString(name6));		
	}
}
[steve, tom, james, mike, bob, oliver]
[steve, tom, james, mike, bob]
[steve, tom, james, mike]
[steve, tom, james]
[steve, tom]

첫 번째와 마지막 요소를 제거하고 복사하여 출력
[tom, james, mike, bob]

 

4. Arrays.sort()
배열의 내용을 오름차순으로 정렬하는 메소드

import java.util.Arrays;

public class Sample1 {
	public static void main(String[] args) {
		
		String[] name1 = new String[] {"tom" ,"steve" ,"oliver" , "james", "mike", "bob"};
		
	
		System.out.println("정렬 전: " + Arrays.toString(name1));
		
		//정렬할 배열을 복사하자
		String[] name2 = Arrays.copyOf(name1, name1.length);
		String[] name3 = Arrays.copyOf(name1, name1.length);
		
		Arrays.sort(name2); //배열의 전체를 정렬
		Arrays.sort(name3, 2, 6); //배열의 일부 범위를 정렬
		System.out.println("전체정렬 후: " + Arrays.toString(name2));
		System.out.println("범위정렬 후: " + Arrays.toString(name3));//3번째 부터 정렬	
	}
}
정렬 전: [tom, steve, oliver, james, mike, bob]
전체정렬 후: [bob, james, mike, oliver, steve, tom]
범위정렬 후: [tom, steve, bob, james, mike, oliver]

'Study > JAVA' 카테고리의 다른 글

[JAVA] 조건문 문제풀기  (0) 2020.06.15
[Java] 조건문  (0) 2020.06.10
[Java] splite()메소드  (0) 2020.06.07
[Java] 반복문 - 문제풀이  (0) 2020.06.07
[Java] 반복문 - for문  (0) 2020.06.07
반응형

splite()메소드는 String 객체에서 제공하는 메소드이다.

-실습-

import java.util.Arrays;

public class Test1 {
	public static void main(String[] args) {
		String names = "현수|민수|정수|민호|태현";
		String arr[]= names.split("\\|");
		System.out.println("|" + Arrays.toString(arr));
		
		String names1 = "현수&민수&정수&민호7태현";
		String arr1[]= names1.split("\\&");
		System.out.println("&" + Arrays.toString(arr1));

		String names2 = "현수$민수$정수$민호$태현";
		String arr2[]= names2.split("\\$");
		System.out.println("$" + Arrays.toString(arr2));
	}
}

'Study > JAVA' 카테고리의 다른 글

[JAVA] 조건문 문제풀기  (0) 2020.06.15
[Java] 조건문  (0) 2020.06.10
[Java] Arrays 클래스  (0) 2020.06.08
[Java] 반복문 - 문제풀이  (0) 2020.06.07
[Java] 반복문 - for문  (0) 2020.06.07
반응형

1.키보드로 부터 숫자를 입력받아서 1부터 입력받은 수만큼의 배열에 담아서
배열의 내용을 반복문 for를 사용하여 출력하세요.

-풀이소스

import java.util.Scanner;

public class Test1 {
	public static void main(String[] args) {
		System.out.println("수를 입력해주세요: ");
		Scanner sc = new Scanner(System.in);
		int input = sc.nextInt();
		
		int[] list = new int[input]; //input 크기(길이)만큼의 리스트 생성
		
		for(int i = 0; i<list.length; i++) { //list에 값 대입
			list[i] = i+1;
		}
		for(int i = 0; i<list.length; i++) {//list값 순서대로 출력
			System.out.println(list[i]);
		}
	}
}

출력화면

1
2
3
4
5

'Study > JAVA' 카테고리의 다른 글

[JAVA] 조건문 문제풀기  (0) 2020.06.15
[Java] 조건문  (0) 2020.06.10
[Java] Arrays 클래스  (0) 2020.06.08
[Java] splite()메소드  (0) 2020.06.07
[Java] 반복문 - for문  (0) 2020.06.07
반응형

1. 다중for문

구구단 만들기

public class Test1 {
	public static void main(String[] args) {
		//1단부터 9단까지
		for(int i = 1; i <10; i++) {
			for(int j = 1; j<10; j++) {
				System.out.printf("%d * %d = %d\n", i,j, i*j);
			}
			System.out.println();
		}
	}
}

실행결과

1 * 1 = 1
1 * 2 = 2
1 * 3 = 3
1 * 4 = 4
1 * 5 = 5
1 * 6 = 6
1 * 7 = 7
1 * 8 = 8
1 * 9 = 9

2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
2 * 8 = 16
2 * 9 = 18

3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27

4 * 1 = 4
4 * 2 = 8
4 * 3 = 12
4 * 4 = 16
4 * 5 = 20
4 * 6 = 24
4 * 7 = 28
4 * 8 = 32
4 * 9 = 36

5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45

6 * 1 = 6
6 * 2 = 12
6 * 3 = 18
6 * 4 = 24
6 * 5 = 30
6 * 6 = 36
6 * 7 = 42
6 * 8 = 48
6 * 9 = 54

7 * 1 = 7
7 * 2 = 14
7 * 3 = 21
7 * 4 = 28
7 * 5 = 35
7 * 6 = 42
7 * 7 = 49
7 * 8 = 56
7 * 9 = 63

8 * 1 = 8
8 * 2 = 16
8 * 3 = 24
8 * 4 = 32
8 * 5 = 40
8 * 6 = 48
8 * 7 = 56
8 * 8 = 64
8 * 9 = 72

9 * 1 = 9
9 * 2 = 18
9 * 3 = 27
9 * 4 = 36
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81 

Break문

구구단 만들기 변형
- 각 단에서 1까지만 곱한 후 출력하게 하자
-이때 필요한 명령어가 break문
break: 특정 조건에 break쓰면 반복문 강제 종료시킨다.

public class Test1 {
	public static void main(String[] args) {	
		for(int i = 1; i <10; i++) {
			for(int j = 1; j<10; j++) {
				System.out.printf("%d * %d = %d\n", i,j, i*j);
				break;
			}
			System.out.println();
		}
	}
}

실행결과

1 * 1 = 1

2 * 1 = 2

3 * 1 = 3

4 * 1 = 4

5 * 1 = 5

6 * 1 = 6

7 * 1 = 7

8 * 1 = 8

9 * 1 = 9

 

Continue문

반복문이 수행 중에 continue키워드를 만나게 되면 이후의 코드는 실행하지 않고 현재의 실행문을 종료하고
조건문으로 다시 돌아가서 반복문의 증감식을 이어나간다. 

public class Test1 {
	public static void main(String[] args) {	
		for(int i = 1; i <10; i++) {
			for(int j = 1; j<10; j++) {
				System.out.printf("%d * %d = %d\n", i,j, i*j);
				break;
			}
			if(true) continue;
			System.out.println();
		}
	}
}
1 * 1 = 1
2 * 1 = 2
3 * 1 = 3
4 * 1 = 4
5 * 1 = 5
6 * 1 = 6
7 * 1 = 7
8 * 1 = 8
9 * 1 = 9

continue를 만나 System.out.println();을 인식하지 않고 바로 다음 반복문으로 넘어간 것을 확인할 수 있다. 

 

향상된 for문

public class Test1 {
	public static void main(String[] args) {	
		String[] friends = {"steve" , "javmes" , "tommy"};
		for(String friend: friends) {
			System.out.println(friend);
		}
	}
}
steve
javmes
tommy

'Study > JAVA' 카테고리의 다른 글

[JAVA] 조건문 문제풀기  (0) 2020.06.15
[Java] 조건문  (0) 2020.06.10
[Java] Arrays 클래스  (0) 2020.06.08
[Java] splite()메소드  (0) 2020.06.07
[Java] 반복문 - 문제풀이  (0) 2020.06.07

+ Recent posts