+7 배열, 크롤링
변수/상수 = 데이터 1개 저장
배열 = 같은 데이터 여러 개 모아서 관리
클래스 = 다른 데이터 여러 개 보아서 관리
기능
비교
*equals
문자열이 같은 지 확인 → 결과 값 (boolean)
e.g 로그인, 아이디 중복 체크
equalsIgnoreCase
문자열이 같은지 확인
equals, equalsIgnoreCase 차이 → 대소문자 구분
contains: 포함 문자열 (챗봇)
eg 검색기
startsWith: 시작 문자열
endsWith: 끝 문자열
eg 제안 기능(자동 완성)
compare: 문자열의 크기 비교
추가
insert: 추가 → 사용 빈도 없음
concat: 대체(+)
찾기
*indexOf(): 앞에서 찾기
*lastIndexOf(): 뒤에서 찾기
문제 제어
*split: 문자를 잘라서 배열에 저장
*substring(): 문자열을 자른 경우 → 문자가 길 경우 ...로 자름
변환
toUpperCase: 대문자
toLowerCase: 소문자
*valueOf(): 모든 데이터형을 문자열로 변환
제거
trim(): 좌우 공백 제거 → 사용자 입력
p182
배열
같은 타입의 여러 변수를 하나로 묶어서 관리
배열 선언
1. 데이터형 배열명[];
2. 데이터형[] 배열명; → 권장
배열 초기화
1. 선언과 동시에 초기화
int[] arr = {1, 2, 3, 4, 5};
2. 선언과 동시에 default 선언
int[] arr = new int[5]; → 0으로 초기화
배열 안에 있는 데이터 출력
배열 값 변경
메모리 구조
public static void main(String[] args) {
int a=(int)(Math.random()*100)+1; // 1-100
int b=(int)(Math.random()*100)+1;
int c=(int)(Math.random()*100)+1;
int d=(int)(Math.random()*100)+1;
int e=(int)(Math.random()*100)+1;
System.out.println(a + " " + b + " " + c + " " + d + " " + e);
// 최대값
int max=0;
int min=100;
if(max<a)
max=a;
if(max<b)
max=b;
if(max<c)
max=c;
if(max<d)
max=d;
if(max<e)
max=e;
System.out.println("최대 값: " + max);
// 최소값
if(min>a)
min=a;
if(min>b)
min=b;
if(min>c)
min=c;
if(min>d)
min=d;
if(min>e)
min=e;
System.out.println("최소 값: " + min);
}
변수를 일일히 다 입력해야 하는 불편
48 55 25 41 41
최대 값: 55
최소 값: 25
↓ 배열로 간단히
public static void main(String[] args) {
int[] arr = {
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
};
int max=0;
int min=100;
System.out.println(Arrays.toString(arr));
// 배열에 저장된 값 출력할 때 사용
// 배열에 저장된 개수 → length
// index 번호 0번부터 시작 → 개수보다 index 번호 작음
// index 번호 벗어나면 오류 발생
for(int i=0; i<arr.length; i++)
{
if(max<arr[i])
max=arr[i];
if(min>arr[i])
min=arr[i];
}
System.out.println("최대 값: " + max);
System.out.println("최소 값: " + min);
}
[29, 83, 97, 29, 82]
최대 값: 97
최소 값: 29
int[] arr = {
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
(int)(Math.random()*100)+1,
};
↓ 간단하게
int[] arr = new int[5];
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*100)+1;
}
크롤링 라이브러리 사이트
Maven Repository: Search/Browse/Explore
Alchemist Machinery to load from files Last Release on May 9, 2022
mvnrepository.com
Jsoup으로 검색
크롤링 연습 사이트
Try jsoup online: Java HTML parser and CSS/Xpath debugger
try.jsoup.org
public static void main(String[] args) {
// 문자열 배열
String[] names = {"김가가","이나나","박다다","한라라","강바바"};
// 출력
for(String name:names)
{
System.out.println(name);
}
char[] alpha= {'A','B','C','D','E'};
for(int i:alpha)
{
System.out.println(i);
}
}
김가가
이나나
박다다
한라라
강바바
65
66
67
68
69
오늘 배열 범위 p182-287
같은 종류
eg. 3명의 국어, 영어, 수학 int kor1, kor2, ko3; int eng1, eng2, eng3; int math1, math2, math3; |
int[] score = new int[9]; → 관리하기 어렵다
int[] kor = new int[3]; int[] eng = new int[3]; int[] math = new int[3]; |
class Student { int kor, eng, math; } |
→ new 이용하면 메모리 여러 개에 저장 가능
선언 방식
데이터형[] 배열명; → 권장
데이터형 배열명[];
초기 값 주는 방식
데이터형[] 배열명={값, 값...};
데이터형[] 배열명=new 데이터형[5];
int[] arr;
arr = new int[5]
new 사용했을 시 default 자동 초기화
int = 0 long = 0L double = 0.0 String = null boolean = false |
정수 10개 저장하고 초기 값(1-100 → random()) → 출력
public static void main(String[] args) {
int[] arr = new int[10]; // 10개 출력
// 0으로 초기화
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*100)+1;
}
// 출력
System.out.println(Arrays.toString(arr));
}
[94, 52, 37, 14, 14, 28, 28, 58, 39, 97]
// 랜덤 숫자 10개 출력
성적 10개 받아서 총합, 평균 구하기
[57, 79, 85, 88, 69, 1, 85, 1, 7, 23]
총합: 495
평균: 49.50
최대 값: 88
최소 값: 1
public static void main(String[] args) {
int[] arr = new int[10];
// 초기 값
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*100)+1;
}
// 출력
System.out.println(Arrays.toString(arr));
// 총합 / 평균
int total=0;
double avg=0.0;
// 총합
for(int i:arr)
{
total+=i;
}
// 평균
avg = total/10.0;
// 최대값 / 최소값
int max=arr[0];
int min=arr[0];
for(int i:arr)
{
if(max<i)
max=i;
if(min>i)
min=i;
}
System.out.println("총합: " + total);
System.out.printf("평균: %.2f\n", avg);
System.out.println("최대 값: " + max);
System.out.println("최소 값: " + min);
}
검색 기능
검색어 입력:
자
자몽
자두
public static void main(String[] args) {
String[] kor = {
"귤",
"망고",
"수박",
"사과",
"배",
"복숭아",
"백도",
"자몽",
"포도",
"청포도",
"딸기",
"산딸기",
"블랙베리",
"블루베리",
"키위",
"멜론",
"오렌지",
"레몬",
"멜론",
"바나나",
"자두",
"살구",
"파인애플",
"감",
"코코넛",
};
Scanner sc = new Scanner(System.in);
System.out.println("검색어 입력: ");
String ss = sc.next();
for(String f:kor)
{
if(f.contains(ss)) // 검색 기능
{
System.out.println(f);
try // 천천히 나오는 효과
{
Thread.sleep(200);
}catch(Exception x) {}
}
}
예제
1. 5개 정수 입력 받고 차례로 출력하는 프로그램 만들기
입력 예) 5 10 9 3 2
출력 예) 5 10 9 3 2
[3, 2, 4, 5, 5]
public static void main(String[] args) {
int[] arr = new int[5];
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*5)+1;
}
System.out.println(Arrays.toString(arr));
}
2. 문자 10개 저장할 수 있는 배열 선언하고 10개의 문자를 입력 받아 입력 받은 문자를 이어서 출력하는 프로그램
[A, X, I, L, K, M, U, E, J, D]
public static void main(String[] args) {
char[] arr = new char[10];
for(int i=0; i<arr.length; i++)
{
arr[i]=(char)((int)(Math.random()*26)+65);
}
System.out.println(Arrays.toString(arr));
}
// 다른 방법
public static void main(String[] args) {
char[] arr = new char[10];
for(int i=0; i<arr.length; i++)
{
arr[i]=(char)((int)(Math.random()*26)+65);
}
for(char c:arr)
{
System.out.print(c + " ");
}
}
3. 정수 10개 입력 받은 후 3, 5번째 정수, 마지막으로 입력 받은 정수를 차례로 출력하는 프로그램
[33, 70, 91, 25, 90, 63, 82, 79, 47, 52]
세번째 값: 91
다섯번째 값: 90
마지막 값: 52
public static void main(String[] args) {
int[] arr = new int[10];
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*100)+1;
}
System.out.println(Arrays.toString(arr));
System.out.println("세번째 값: " + arr[2]);
System.out.println("다섯번째 값: " + arr[4]);
System.out.println("마지막 값: " + arr[arr.length-1]);
}
4. 10개의 정수 입력 받아 그 중 가장 큰 수 출력하는 프로그램
[26, 77, 29, 8, 57, 45, 32, 86, 92, 92]
최대 값: 92
public static void main(String[] args) {
int[] arr = new int[10];
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*100)+1;
}
System.out.println(Arrays.toString(arr));
int max=0; // 최대값 저장 변수
for(int i:arr)
{
if(max<i)
max=i;
}
System.out.println("최대 값: " + max);
}
5. 10명의 컴퓨터 정수 입력 받아 배열에 저장하고 총점과 평균 구하여 출력하는 프로그램
[64, 21, 55, 55, 6, 11, 76, 14, 48, 63]
총합: 413
평균: 41.30
public static void main(String[] args) {
int[] arr = new int[10];
for(int i=0; i<arr.length; i++)
{
arr[i]=(int)(Math.random()*100)+1;
}
System.out.println(Arrays.toString(arr));
int total=0;
double avg=0.0;
// 총점
for(int i:arr)
{
total+=i;
}
// 평균
avg = total/10.0;
System.out.println("총합: " + total);
System.out.printf("평균: %.2f\n", avg);
}
6. 5개의 정수를 {95, 75, 85, 100, 50}으로 초기화하고 오름차순으로 정렬하는 프로그램
정렬 전:
[95, 75, 85, 100, 50]
[50, 75, 85, 95, 100]
public static void main(String[] args) {
int[] arr = {95, 75, 85, 100, 50};
// 정렬 전
System.out.println("정렬 전: ");
System.out.println(Arrays.toString(arr));
for(int i=0; i<arr.length-1; i++)
{
for(int j=i+1; j<arr.length; j++)
{
if(arr[i]>arr[j]) // < 이면 내림차순
{
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
// 오름차순
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// 오름차순
for(int i=0; i<arr.length; i++)
{
System.out.print(arr[i] + " ");
}
System.out.println();
// 내림차순
for(int i=arr.length-1; i>=0; i--)
{
System.out.print(arr[i]+ " ");
}