이안의 평일코딩

JAVA의 정석 18일차 - 멤버변수와 공유변수 본문

Back-end/Java

JAVA의 정석 18일차 - 멤버변수와 공유변수

이안92 2020. 7. 8. 15:49
반응형

2020.07.08(수)

=>영화

1. 영화명, 2. 출연, 3. 감독, 4. 예매율, 5. 순위

public class MainClass {

	public static void main(String[] args) {
		String[] title = {
				"#살아있다(2020)",
				"밤쉘: 세상을 바꾼 폭탄선언(2019)",
				"다크 나이트 라이즈(2012)",
				"원 데이(2011)",
				"결백(2019)"};
		String[] actor = {
				"유아인, 박신혜",
				"샤를리즈 테론, 니콜 키드먼, 마고 로비",
				"크리스찬 베일, 마이클 케인, 게리 올드만, 앤 해서웨이, 마리옹 꼬띠아르",
				"앤 해서웨이, 짐 스터게스",
				"신혜선, 배종옥, 허준호"};
		String[] director = {
				"조일형",
				"제이 로치",
				"크리스토퍼 놀란",
				"론 쉐르픽",
				"박상현"};
		double[] reserve = {17.4, 12.1, 7.5, 1.3, 1.0};
		int[] rank = {1, 2, 3, 4, 5};
		// 배열 ==> index
		for(int i=0; i<5; i++) {
			System.out.println("영화명:"+title[i]);
			System.out.println("감독:"+director[i]);
			System.out.println("출연:"+actor[i]);
			System.out.println("예매율:"+reserve[i]);
			System.out.println("영화순위:"+rank[i]);
			System.out.println("====================");
		}
	}
}

 

사용자가 직접 데이터형을 만든다

class MovieInfo{
	// 멤버변수, 인스턴수 변수 => 메모리 공간을 생성 => new
	String title;
	String director;
	String actor;
	double reserve;
	int rank;
	static String site_name; // static변수는 공간이 1개. 마지막에 입력된 값으로 바뀜
	// 하나가 바뀌면 전체가 다 바뀜 => static변수=공유변수
	// 클래스 안에서 각각 공간 차지 => instance변수=멤버변수
}

//MovieInfo m1 = new MovieInfo()
public class MainClass2 { // public class는 한번만가능, 저장명과 동일
						// public생략 가능한데 이 경우에는 main이 있는 class가 저장명

//	"원 데이(2011)",
//	"결백(2019)"};
//			"앤 해서웨이, 짐 스터게스",
//			"신혜선, 배종옥, 허준호"};
//			"론 쉐르픽",
//			"박상현"};
//	double[] reserve = {, , , 1.3, 1.0};

	public static void main(String[] args) {
		MovieInfo m1 = new MovieInfo(); 
		// m1 => 메모리에 저장되어 있는 변수의 초기값
		// MovieInfo[] m = new MovieInfo[50];
		m1.title="#살아있다(2020)";
		m1.director="유아인, 박신혜";
		m1.actor="조일형";
		m1.reserve=17.4;
		m1.rank=1;
		m1.site_name="CGV";
		
		MovieInfo m2 = new MovieInfo();
		m2.title="밤쉘: 세상을 바꾼 폭탄선언(2019)";
		m2.director="샤를리즈 테론, 니콜 키드먼, 마고 로비";
		m2.actor="제이 로치";
		m2.reserve=12.1;
		m2.rank=2;
		m2.site_name="롯데시네마";
		
		MovieInfo m3 = new MovieInfo();
		m3.title="다크 나이트 라이즈(2012)";
		m3.director="크리스찬 베일, 마이클 케인, 게리 올드만, 앤 해서웨이, 마리옹 꼬띠아르";
		m3.actor="크리스토퍼 놀란";
		m3.reserve=7.5;
		m3.rank=3;
		m3.site_name="메가박스"; //m1,m2,m3 site_name 모두 메가박스가 됨
		
		MovieInfo.site_name="서울극장";
		
		System.out.println("영화관:"+m1.site_name); //서울극장
		m3.title="원 데이(2011)";
		System.out.println("영화명:"+m1.title); //#살아있다 그대로 유지
		System.out.println("영화명:"+m3.title); //원 데이로 변경
	}

}

 

 

변수설정

/*#살아있다(2020)
평점 05.0
2020.06.24 개봉
15세이상관람가
감독 조일형 주연 유아인, 박신혜
예매 2위 
*/

public class MovieVO {
int mno; // 구분
int type;
String title;
double score;
String regdate;
String grade;
String director;
String actor;
int rank;
String poster;
String story;
}

 

 

import java.util.*;
import java.awt.*;
import javax.swing.*;

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

import java.awt.event.*;
import java.net.*;

public class MovieMain extends JFrame implements ActionListener{
	JButton b1,b2,b3,b4,b5; //멤버변수의 초기화
	// JLabel la = new JLabel(); //그림출력
	static MovieVo[] movies = new MovieVo[20];
	JPanel pan = new JPanel();
	// MovieMain m = new MovieMain()
	
	MovieMain() {
		b1=new JButton("현재상영영화");
		b2=new JButton("개봉예정영화");
		b3=new JButton("박스오피스(주간)");
		b4=new JButton("박스오피스(월간)");
		b5=new JButton("박스오피스(연간)");
		JPanel p = new JPanel();
		p.add(b1);p.add(b2);p.add(b3);p.add(b4);p.add(b5);
		add(p);
		setLayout(null);
		//p.setBounds(x, y, width, height);
		p.setBounds(10, 15, 1280, 35);
		//la.setBounds(10, 60, 200, 350);
		pan.setBounds(10, 60, 1280, 900);
        
			//URL url = new URL("https://movie-phinf.pstatic.net/20200624_189/1592965781317Puv47_JPEG/movie_image.jpg");
			//la.setIcon(new ImageIcon(getImage(new ImageIcon(url),200,350)));
			//}catch(Exception ex) {}
			//add(la);
            
		add(pan);
		//setSize(width, height);
		setSize(1300, 1000);
		try {
			movieData(1);
			imagePrint();
		}catch(Exception ex) {ex.printStackTrace();}
		setVisible(true);
		
		b1.addActionListener(this);
		b2.addActionListener(this);
		b3.addActionListener(this);
		b4.addActionListener(this);
		b5.addActionListener(this);
	}
	Image getImage(ImageIcon ii,int w,int h)
    {
    	Image dimg = ii.getImage().getScaledInstance(w, h,
    	        Image.SCALE_SMOOTH);
    	return dimg;
    }
	void imagePrint() throws Exception {
		pan.setLayout(new GridLayout(4,5,8,8));
        pan.removeAll();
		for(movieVo vo:movies){
        	if(vo.poster!=null){
            	URL url=new URL(vo.poster);
                pan.add(new JLabel(new ImageIcon(getImage(new ImageIcon(url),250,280))));
            }
        }
        pan.validate();
	}
    
	static void movieData(int no) throws Exception {
		String url="";
		switch(no) {
		case 1:
			url="https://movie.daum.net/premovie/released";
			break;
		case 2:
			url="https://movie.daum.net/premovie/scheduled";
			break;
		case 3:
			url="https://movie.daum.net/boxoffice/weekly";
			break;
		case 4:
			url="https://movie.daum.net/boxoffice/monthly";
			break;
		case 5:
			url="https://movie.daum.net/boxoffice/yearly";
			break;
		}
        
        /*
    	 *  <div class="info_movie">
    	 *    <h1>aaa</h1> => text
				<span class="thumb_movie bg_noimage">
				<img src="//img1.daumcdn.net/thumb/C236x340/?fname=https://t1.daumcdn.net/movie/3986610f921d4371be92d6184bf75dc1c74d80e2" class="img_g" alt="" onload="noImageOnLoad($(this))">
    	 */
    	
    	// //img1.daumcdn.net/thumb/C236x340/?fname=https://t1.daumcdn.net/movie/3986610f921d4371be92d6184bf75dc1c74d80e2
    	Document doc=Jsoup.connect(url).get();
    	Elements image=doc.select("div.info_movie span.thumb_movie img.img_g");
    	for(int i=0;i<20;i++)
    	{
    		movies[i]=new MovieVO();
    		String temp=image.get(i).attr("src");
    		movies[i].poster=temp.substring(temp.indexOf("=")+1);
    	}
    }
	
	public static void main(String[] args) throws Exception{
		UIManager.setLookAndFeel("com.jtattoo.plaf.hifi.HiFiLookAndFeel");
		new MovieMain();
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==b1)
		{
			try
		    {
		    	movieData(1);
		    	imagePrint();
		    }catch(Exception ex) {}
		}
		else if(e.getSource()==b2)
		{
			try
		    {
		    	movieData(2);
		    	imagePrint();
		    }catch(Exception ex) {}
		}
		else if(e.getSource()==b3)
		{
			try
		    {
		    	movieData(3);
		    	imagePrint();
		    }catch(Exception ex) {}
		}
		else if(e.getSource()==b4)
		{
			try
		    {
		    	movieData(4);
		    	imagePrint();
		    }catch(Exception ex) {}
		}
		else if(e.getSource()==b5)
		{
			try
		    {
		    	movieData(5);
		    	imagePrint();
		    }catch(Exception ex) {}
		}
    }
}

 

성적 계산

import java.util.*;

//성적 계산
//학생 정보 데이터형을 제작 => 사용자 정의 데이터형
class Student{
		String name; //null => 모듬 클래스 (주소) 주소가 없는 경우 (null)
		int kor; // 0 지역변수는 지저안하면 오류나지만 멤버변수로 선언된 변수는 자동으로 초기값 들어감
		int eng;
		int math;
		int total;
		double avg; // 0.0
		int rank;
}	
public class MainClass {
	
static void process() {
	Student[] std=new Student[3]; // 3명
	// int[] arr = new int[3] ==> {0,0,0}
	// 클래스 ==> null
	// 입력 => 초기값
	Scanner scan = new Scanner(System.in);
	for(int i=0; i<std.length; i++) {
		// 메모리 할당
		std[i] = new Student(); //new를 통해 저장공간 만들어야함
		System.out.print("이름 입력:");
		std[i].name = scan.next(); //nextLine()은 \n까지 읽기 때문에 오류남
		
		System.out.print("국어 점수 입력:");
		std[i].kor = scan.nextInt();
		
		System.out.print("영어 점수 입력:");
		std[i].eng = scan.nextInt();
		
		System.out.print("수학 점수 입력:");
		std[i].math = scan.nextInt();
		
		std[i].total = std[i].kor+std[i].eng+std[i].math;
		std[i].avg = std[i].total/3.0;
	}
	for(Student s:std) {
		System.out.println(s.name+" "+s.kor+" "+s.eng+" "+s.math+" "+s.total+" "+s.avg);
	}
}
	public static void main(String[] args) {
		process();
	}
}

 

반응형
Comments