수업

+12 메소드 호출, 응용

hs_developer 2022. 5. 18. 15:01
a=92, b=73
최대 값: 92
최소 값: 73
최대 값과 최소 값 차이: 19
	// 1. 정수 2개 전송 (매개변수에 값 채운다) → 결과 값은 최대 값
	static int max(int a, int b)
	{
		return a>b?a:b;
	}
	
	static int min(int a, int b)
	{
		return a<b?a:b;
	}
	
	static void process()
	{
		// 출력
		int a = (int)(Math.random()*100)+1;
		int b = (int)(Math.random()*100)+1;
		System.out.println("a=" + a +", b=" + b);
		
		System.out.println("최대 값: " + max(a, b));
		System.out.println("최소 값: " + min(a, b));
		
		// 최대 값과 최소 값 차이 출력
		int max = max(a, b); // 결과 값을 받아 놓아야 함
		int min = min(a, b);
		System.out.println("최대 값과 최소 값 차이: " + (max-min));

	}
	
	public static void main(String[] args) {

		process();

	}

 

 

 

메소드 호출

 

	// static → 메모리에 자동 저장
	int add(int a, int b, int c)
	{
		return a+b+c;
	}
	
	public static void main(String[] args) {
		
            add(10, 20, 30); 
            // static이 없어 저장이 안 된 상태
            // static 없이 호출할 경우 new 사용
		
	}

 

 

	static int add(int a, int b, int c)
	{
		return a+b+c;
	}
	
	public static void main(String[] args) {
		
		int sum = add(10, 20, 30);
		double avg = sum/3.0;
		System.out.printf("%.2f", avg);
	}

 

 

 

메소드 응용

 


노래 사이트 크롤링

 

===== 메뉴 =====
1. Music Top 50
2. 가요
3. POP
4. OST
5. 트로트
6. JAZZ
7. CLASSIC
9. 종료
===============

 

import java.util.*;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
public class 음악사이트 {

	static int menu()
	{
		System.out.println("===== 메뉴 =====");
		System.out.println("1. Music Top 50");
		System.out.println("2. 가요");
		System.out.println("3. POP");
		System.out.println("4. OST");
		System.out.println("5. 트로트");
		System.out.println("6. JAZZ");
		System.out.println("7. CLASSIC");
		System.out.println("9. 종료");
		System.out.println("===============");
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("메뉴 선택: ");
		int m = sc.nextInt();
		
		return m;
	}
	
	// 음악 사이트 크롤링 메소드
	static void musicData(int type)
	{
		String[] site = {
			"https://www.genie.co.kr/chart/top200",
			"https://www.genie.co.kr/chart/genre?ditc=D&ymd=20220516&genrecode=M0100",
			"https://www.genie.co.kr/chart/genre?ditc=D&ymd=20220516&genrecode=M0200",
			"https://www.genie.co.kr/chart/genre?ditc=D&ymd=20220516&genrecode=M0300",
			"https://www.genie.co.kr/chart/genre?ditc=D&ymd=20220516&genrecode=M0107",
			"https://www.genie.co.kr/chart/genre?ditc=D&ymd=20220516&genrecode=M0500",
			"https://www.genie.co.kr/chart/genre?ditc=D&ymd=20220516&genrecode=M0600"	
		};
		
		try
		{
//			Runtime.getRuntime().exec("\\C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe " + site[type-1]);
			
			org.jsoup.nodes.Document doc = Jsoup.connect(site[type-1]).get();
			
			// 노래 제목 불러오기
			Elements title = doc.select("table.list-wrap td.info a.title");
			
//			System.out.println(title.toString());
			
			// 번호 입력 시 노래 제목 리스트 불러오기
			for(int i=0; i<title.size(); i++)
			{
				System.out.println((i+1)+"."+title.get(i).text());
			}
			
			
		} catch(Exception ex) {}
	}
	
	
	static void process()
	{
		while(true)
		{
			int m = menu();
			
			if(m==9)
			{
				System.out.println("프로그램 종료");
				break;
			}
			
			else
			{
				musicData(m);
			}
		}
	}
	
	public static void main(String[] args) {
		
		process();
	}

}

 

 

 

다른 클래스에서 재사용

 

public class 재사용 {

	public static void main(String[] args) {
		
		음악사이트.process(); // 디른 클래스에서 재사용
	}
	
}

 

 

 

영화 사이트 크롤링

 

===== 메뉴 =====
1. reservation
2. boxoffice
3. OTT
4. Netflix
5. Watcha
6. Kakaopage
7. Search
9. End
===============

 

import java.util.*;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
public class 영화사이트 {

	// 메뉴
	static int menu()
	{
		System.out.println("===== 메뉴 =====");
		System.out.println("1. reservation");
		System.out.println("2. boxoffice");
		System.out.println("3. OTT");
		System.out.println("4. Netflix");
		System.out.println("5. Watcha");
		System.out.println("6. Kakaopage");
		System.out.println("7. Search");
		System.out.println("9. End");
		System.out.println("===============");
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("메뉴 선택: ");
		int m = sc.nextInt();
		
		return m;
	}
	
	
	// 목록
	static void movieData(int type)
	{
		String[] site = {
			
			"https://movie.daum.net/ranking/reservation",
			"https://movie.daum.net/ranking/boxoffice/weekly",
			"https://movie.daum.net/ranking/ott",
			"https://movie.daum.net/premovie/netflix",
			"https://movie.daum.net/premovie/watcha",
			"https://movie.daum.net/premovie/kakaopage"
			
		};
		
		try {
			Document doc = Jsoup.connect(site[type-1]).get();
			Elements title = doc.select("strong.tit_item a.link_txt");
			
			// a 태그 포함돼 출력
			// System.out.println(title.toString());
			
			// a 태그 제거
			for(int i=0; i<title.size(); i++)
			{
				System.out.println((i+1) + "." + title.get(i).text());
			}
			
		} catch (Exception e) {}
	}
	
	// 찾기
	static void searchData(String ss)
	{
		try {
			Document doc = Jsoup.connect("https://movie.daum.net/ranking/reservation").get();
			Elements title = doc.select("strong.tit_item a.link_txt");
			
			
			// a 태그 제거
			for(int i=0; i<title.size(); i++)
			{
				if(title.get(i).text().contains(ss))
				{
					System.out.println((i+1) + "." + title.get(i).text());
				}	
			}
		} catch (Exception e) {}
	}
	
	
	// 조립 → process()
	static void process()
	{
		while(true)
		{
			int m = menu();
			
			if(m==9)
			{
				System.out.println("프로그램 종료!!");
				break;
			}
			else if(m==7) // 검색 기능
			{
				Scanner sc = new Scanner(System.in);
				
				System.out.println("검색어 입력: ");
				
				String ss = sc.next();
				searchData(ss); // 찾기 메소드
			}
			else
			{
				movieData(m);
			}
		}
	}
	
	public static void main(String[] args) {
		
		process();
		
	}
	
}

 

 


 

전역 변수

 

음악

1. 목록 → 페이지 나누기
2. 상세 보기
3. 노래 찾기
4. 가수명 입력해서 → 노래 제목 찾기
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 메소드 제작
→ 메뉴

 

 

===== 메뉴 =====
1. 음악 목록
2. 상세 보기
3. 노래 찾기
4. 가수 명으로 노래 찾기
9. 종료
===============
메뉴 선택:

 

import java.util.Scanner;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class 전역변수 {
	
	// 선언
	static String[] title = new String[200]; // 노래 200개
	static String[] singer = new String[200]; // 가수 200명
	
	static // 1번만 실행 됨
	{
		try
		{
			int k=0;
			for(int i=1; i<=4; i++)
			{
				Document doc = Jsoup.connect("https://www.genie.co.kr/chart/top200?ditc=D&ymd=20220518&hh=15&rtm=Y&pg="+i).get();
				
				// 제목
				Elements mt = doc.select("table.list-wrap td.info a.title");
				
				// 가수명
				Elements ms = doc.select("table.list-wrap td.info a.artist");
				
				for(int j=0; j<mt.size(); j++)
				{
					try
					{
						title[k] = mt.get(j).text();
						singer[k] = ms.get(j).text();
						
					} catch(Exception ex){}
					k++;
				}
			}
			
		} catch(Exception ex) {}
	}
	

	static int menu()
	{
		System.out.println("===== 메뉴 =====");
		System.out.println("1. 음악 목록");
		System.out.println("2. 상세 보기");
		System.out.println("3. 노래 찾기");
		System.out.println("4. 가수 명으로 노래 찾기");
		System.out.println("9. 종료");
		System.out.println("===============");
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("메뉴 선택: ");
		int m = sc.nextInt();
		
		return m;
	}
	
	// 음악 목록
	static void musicList()
	{
		// 전체 목록 출력
		for(int i=0; i<title.length; i++)
		{
			System.out.println((i+1) + "." + title[i]);
		}
	}
	
	// 상세 보기
	static void musicDetail()
	{
		Scanner sc = new Scanner(System.in);
		
		System.out.println("1-200 사이의 노래 번호 입력: ");
		
		int no = sc.nextInt();
		
		System.out.println("===== 상세 보기 =====");
		System.out.println("노래 제목: " + title[no-1]);
		System.out.println("가수명: " + singer[no-1]); // 배열에서 찾으므로 -1
		System.out.println("===================");
		
	}
	
	// 노래 찾기
	static void musicFind()
	{
		Scanner sc = new Scanner(System.in);
		
		System.out.println("검색어 입력: ");
		String ss = sc.next();
		
		for(String t:title)
		{
			if(t.contains(ss))
			{
				System.out.println(t);
			}
		}
	}
	
	// 가수명으로 노래 찾기
	static void singerFind()
	{
		// 1. 가수명 입력
		// 2. singer[] → 전체(singer, title → 인덱스 번호 매치됨)
		// 3. 인덱스 번호 
		Scanner sc = new Scanner(System.in);
		
		System.out.println("가수명 입력: ");
		String s = sc.next();
		
		for(int i=0; i<singer.length; i++)
		{
//			if(s.equals(singer[i]))
			if(singer[i].contains(s)) // startsWith
			{
				System.out.println(title[i]); // singer[i]번째와 title[i]번째 순서가 같은지
			}
		}
	}
	
	// 조립 → 메소드 전부 모으는 역할
	static void process()
	{
		while(true)
		{
			int m = menu();
			
			if(m==9)
			{
				System.out.println("프로그램 종료!!");
				break;
			}
			
			else if(m==1)
			{
				musicList();
			}
			
			else if(m==2)
			{
				musicDetail();
			}
			
			else if(m==3)
			{
				musicFind();
			}
			
			else if(m==4)
			{
				singerFind();
			}
		}
	}
	
	public static void main(String[] args) {
		
		process();
	}
}