Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 프로그래머스
- 겟셋함수
- 반복문라벨
- 클래스배열
- 자바별찍기
- 중첩for문
- 자바수우미양가
- SQL
- 자바상수
- 오버로딩
- 기타제어자
- 자바연산자
- 변수명명규칙
- read()함수
- 자바제어문
- 자바형식
- 자바if문
- 변수의 초기화
- 팩토리얼재귀
- 오라클
- 자바함수
- 효율적인연산
- 자바실행방법
- 연산자우선순위
- 자바자료형
- 자바클래스
- 자바기타제어자
- 자바switch문
- 누승재귀
- 자바접근지정자
Archives
- Today
- Total
h-i-s-t-o-r-y
[Java] Arrays 클래스 - 배열 요소 검색하기, 배열 복사 본문
package days09;
import java.util.Arrays;
import java.util.Scanner;
public class Ex02_02 {
public static void main(String[] args) {
// 2. 이진 검색 (BinarySearch)
// 1. 순차 검색 (SequenceSearch)
int [] m = new int[10];
for (int i = 0; i < m.length; i++) {
m[i] = (int) (Math.random()*50) +1; //1~50
}
// **암기
// Arrays 클래스 : 배열을 다루는 클래스
// String --- Arrays.toString(m)
System.out.println(Arrays.toString(m)); //어떤값이 들어있는지 확인하는 용도
System.out.print("> 검색할 정수를 입력 ? ");
Scanner scanner = new Scanner(System.in);
int searchNum = scanner.nextInt();
//return 찾은위치(index) 배열, 찾을 정수
// int idx = indexOf(m, searchNum);
int idx = lastindexOf(m, searchNum);
if (idx==-1) {
System.out.println("> m 배열 안에 찾는 정수(searchNum)는 없습니다.");
} else {
System.out.printf("%d는 %d(index)에 있습니다.\n", searchNum, idx);
}
System.out.println("==END==");
}//main
private static int lastindexOf(int[] m, int searchNum) {
int idx = -1;
for (int i = m.length-1; i < m.length; i--) {
if( m[i] == searchNum ) return i;
// {idx=i; break;}
}
return idx;
}
private static int indexOf(int[] m, int searchNum) {
int idx = -1;
for (int i = 0; i < m.length; i++) {
if( m[i] == searchNum ) return i;
// {idx=i; break;}
}
return idx;
}
}//class
package days10;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Ex01 {
public static void main(String[] args) {
int [] m = new int[10];
Random rnd = new Random();
for (int i = 0; i < m.length; i++) {
m[i] = rnd.nextInt(20)+1;
}
System.out.println(Arrays.toString(m)); //****기억
Scanner scanner = new Scanner(System.in);
System.out.print("> 찾을 정수 입력 ? ");
int n = scanner.nextInt();
int [] x = sequenceSearch(m, n);
System.out.println(Arrays.toString(x));
}//main
// 함수안에서 출력하면 활용할 수가 없음
private static int[] sequenceSearch(int[] m, int n) {
//찾고자하는 수의 위치들을 저장할 배열
int [] x = new int[ m.length ];
//0으로 초기화돼서 0번째를 가리키는건지 0배열인지 알수가 없음
/*
for (int i = 0; i < x.length; i++) {
x[i] = -1;
}
*/
Arrays.fill(x, -1); //위에 for문이랑 같음. Arrays 클래스의 fill 함수
for (int i = 0 , j=0; i < m.length; i++) {
if(m[i]==n) {
x[j]=i;
j++;
}
}
return x;
}
}//class
package days10;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Ex01_03 {
public static void main(String[] args) {
//6번 시험다시냄
int [] m = new int[10];
fillM(m);
int n = getNumber();
int begin = 0;
/*6번
while (true) {
int idx = sequenceSearch(m, n, begin);
if(idx == -1) break; // -1:배열끝까지 찾았는데 없다
System.out.println(idx);
begin = idx + 1;
}
*/
// *********** 기억,이해,암기
// 위에 코드 두줄을 조건식 안에 한줄로 ...
int idx;
/*
while ( (idx = sequenceSearch(m, n, begin)) != -1 ) {
System.out.println(idx);
begin = idx + 1;
// 찾는 정수 없다면 while문 한번도 안들어가서 begin=0 상태일 것
}
if(begin==0) System.out.println("> 찾는 정수는 없습니다.");
*/
boolean flag = false;
while ( (idx = sequenceSearch(m, n, begin)) != -1 ) {
System.out.println(idx);
begin = idx + 1;
flag = true;
// 찾는 정수 없다면 while문 한번도 안들어가서 flag=false
// 한번이라도 들어가서 찾으면 flag = true
}
if(!flag) System.out.println("> 찾는 정수는 없습니다.");
}//main
private static int getNumber() {
Scanner scanner = new Scanner(System.in);
System.out.print("> 찾을 정수 입력 ? ");
int n = scanner.nextInt();
return n;
}
private static void fillM(int[] m) {
Random rnd = new Random();
for (int i = 0; i < m.length; i++) {
m[i] = rnd.nextInt(20)+1;
}
System.out.println(Arrays.toString(m));
}
private static int sequenceSearch(int[] m, int n) {
for (int i = 0; i < m.length; i++) {
if(m[i]==n) return i;
}
return -1;
}
private static int sequenceSearch(int[] m, int n, int begin) { //찾기시작하는 위치
for (int i = begin; i < m.length; i++) {
if(m[i]==n) return i;
}
return -1;
}
}//class
package days26;
import java.util.Arrays;
public class Ex07 {
public static void main(String[] args) {
// p.624 Arrays 클래스
// 배열을 다루는 유용한 메서드가 정의되어 있다
int[] m = new int[10];
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
System.out.println(Arrays.toString(m));
Arrays.setAll(m, i -> (int) (Math.random()*100)+1);
// Arrays.fill(m, -1);
Arrays.parallelSort(m); //오름차순 정렬
int idx = Arrays.binarySearch(m, 50);
System.out.println(Arrays.toString(m));
// 배열 복사 - 다른 객체 참조
int[] copy_m = Arrays.copyOf(m, m.length);
copy_m[0] = 111;
System.out.println(Arrays.toString(copy_m)); //111 저장됨
System.out.println(Arrays.toString(m)); //111X 원래값
// Arrays.copyOfRange(); //배열의 일부분만 복사..
// System.arraycopy(src, srcPos, dest, destPos, length);
// p.628 Comparator와 Comparable
}//main
}//class
'Java' 카테고리의 다른 글
[Java] 카드번호 랜덤 위치 마스킹 (0) | 2021.07.16 |
---|---|
[Java] 랜덤 로또 번호 발생기 (0) | 2021.07.16 |
[Java] 재귀함수(Recursive Function) (0) | 2021.07.16 |
[Java] switch() 예제 (0) | 2021.07.16 |
[Java] 정규표현식 - String.matches(regex) / pattern, matcher (0) | 2021.07.13 |
Comments