[Day 11] Java 0411 - 내용 정리

Doyeon Kim·2022년 4월 11일
1

Java

목록 보기
13/16
post-thumbnail

🌞파일 입출력

  • 지금까지는 프로그램 실행한 결과를 화면에 출력하였다. 화면에 출력한 결과는 컴퓨터 전원을 끄면 사라지게 된다. ==> 휘발성
    그래서 프로그램 실행한 결과를 영구적으로 보관하고자 한다면 파일로 출력할 수 있다.
  • 또, 지금까지는 프로그램 실행에 필요한 데이터를 키보드로부터 입력받았다. 필요하다면 프로그램 실행에 필요한 데이터를 파일로부터 읽어들일 수 있다.

🌞java.io

  • 입출력과 관련된 클래스들을 모아 놓은 패키지
	읽는다. 출력한다 		==> 컴퓨터의 "메모리" 입장에서 따지는 것
	읽는다.				==> 파일의 내용을 메모리로 읽어들인다.
	출력한다. 				==> 메모리의 내용을 파일로 출력한다.

🌞입출력 단위

🌈문자단위의 입출력 글자

  • 단위로 입출력하기 때문에 메모장에서 확인할 수 있다.

🌈바이트 단위 입출력

  • 그림이나 엑셀파일은 그 파일이 만들어진 프로그램에서만 읽어들일 수 있고, 메모장에서 확인할 수 없다. 이러한 입출력을 바이트 단위의 입출력이라고 한다.

🌞자바가 제공하는 입출력 클래스들

  • 문자단위의 입력 (제일조상)Reader -> FileReader

  • 문자단위의 출력 (제일조상)Writer -> FileWriter

  • 바이트단위의 입력 (제일조상)InputStream

  • 바이트단위의 출력 (제일조상)OutputStream


🌞스트림(Stream)

  • 순서있는 자료의 흐름

🌞그래픽의 표현

  • JPanal을 상속받아 새로운 클래스를 만든다.
  • paintComponent를 오버라이딩하여 그래픽을 표현한다.
  • 이 Panel을 생성하여 프레임에 부착한다.

🌞예제

🌟(그림판)예제1🌟

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

class GrimpanPanel extends JPanel {

	@Override
	protected void paintComponent(Graphics g) {
		// TODO Auto-generated method stub
		//super.paintComponent(g);
		
		g.setColor(Color.red);
		g.drawLine(10, 10, 100, 100); //선을 그어줌.
		
		g.setColor(Color.blue);
		g.drawOval(10, 10, 100, 100); //원 그리기
	
	
		g.setColor(Color.green);
		g.drawRect(10, 10, 100, 100); //사각형 그리기
	}
	
}


class Grimpan extends JFrame { 
	
	//그림판 매널을 멤버로 선언
	GrimpanPanel gp;
	
	
	public Grimpan() {
		gp = new GrimpanPanel();
		add(gp);
		setSize(400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}


public class GrimpanTest {

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

}

🌟(그림판)예제2🌟

import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;

class Paint extends JFrame implements ActionListener{
	public Paint() {
		setSize(400, 300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void paintComponents(Graphics g) {
		// TODO Auto-generated method stub
		//super.paintComponents(g);
		g.drawLine(10, 10, 100, 100); //선을 그리는 코드
	
	}
	
	
	
}

public class PaintTest {

	public static void main(String[] args) {
		new Paint();

	}

}

🌞연습문제

👑연습문제1👑

package practice08;
//0408 숙제 pdf 8번문제
import java.util.ArrayList;
import java.util.Objects;
import java.util.Scanner;

class Student {
	private String name, addr, phone;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public Student(String name, String addr, String phone) { //생성자
		super();
		this.name = name;
		this.addr = addr;
		this.phone = phone;
	}

	@Override
	public int hashCode() {
		return Objects.hash(addr, name, phone);
	}

	@Override
	public boolean equals(Object obj) { //삭제하기 위하여 필요함
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		return Objects.equals(addr, other.addr) && Objects.equals(name, other.name)
				&& Objects.equals(phone, other.phone);
	}
	
	
	
	
}

public class StudentTest {
	public static Scanner sc; //스캐너를 모두 사용하기 위하여
	
	public static void printMenu() {
		System.out.println("----------------------------------------------");
		System.out.println("1. 학생등록, 2. 검색, 3. 삭제, 4. 모두출력, 0. 종료");
		System.out.print("메뉴를 선택하세요: ");
	}

	public static void main(String[] args) {
		
		ArrayList<Student> list = new ArrayList<Student>();
		
		sc = new Scanner(System.in);
		int menu;
		
		while(true) {
			printMenu();
			menu = sc.nextInt();
			if(menu == 0) {
				break;
			}
			
			switch(menu) {
			case 1: insertStudent(list);break;
			case 2: searchStudent(list);break;
			case 3: deleteStudent(list);break;
			case 4: printStudent(list);break;
			}
		}
		
		System.out.println("프로그램을 종료하였습니다.");
	}

	private static void printStudent(ArrayList<Student> list) {
		System.out.println("이름\t 주소\t 전화번호\t");
		for(int i=0; i<list.size(); i++) {
			Student s = list.get(i);
			System.out.println(s.getName() + "\t" + s.getAddr() + "\t" + s.getPhone());
		}
		
	}

	private static void deleteStudent(ArrayList<Student> list) {
		String name;
		System.out.print("삭제할 학생의 이름을 입력하세요: ");
		name = sc.next();
		
		
		
//		Student s1 = new Student("홍길동", "서울", "1111");
//		Student s2 = new Student("홍길동", "서울", "1111");
//		
//		if(s1.equals(s2)) { //두 객체가 동일한 값을 가지고 있는가?
//			
//		}
		
		
//		ArrayList<Student> list2 = new ArrayList<Student>();
//		list2.add(new Student("홍길동", "서울", "1111"));
//		list2.add(new Student("이순신", "부산", "2222"));
//		
//		Student s1 = new Student("홍길동", "서울", "1111");
//		list2.remove(s1);
//		//리스트의 요소를 삭제할 때에 인덱스가 아닌 객체를 매개변수로 전달하면 equals 메소드를 요구한다.
		
		
		
		
//		for(int i=0; i<list.size(); i++) { //이렇게 하면 equals가 없어도됨.( Student 클래스에서 만들어준  equals)
//			Student s = list.get(i);
//			if(s.getName().equals(name)) {
//				list.remove(i);
//			}
//		}
		
		
		for(Student s: list) { //Student 클래스에서 equals 메소드를 생성해줌.
			if(s.getName().equals(name)) {
				list.remove(s); //s객체를 지워라
				System.out.println(name + "학생의 정보를 삭제하였습니다.");
			}
		} 
		
		
		
	}

	private static void searchStudent(ArrayList<Student> list) {
		String name;
		System.out.print("검색할 학생의 이름을 입력하세요: ");
		name = sc.next();
		
		for(Student s: list) {
			if(s.getName().equals(name)) {
				System.out.println("검색한 학생의 정보는 다음과 같습니다.");
				System.out.println(s.getName()+"\t" + s.getAddr()+"\t" + s.getPhone());
			}
		}
		
	}

	private static void insertStudent(ArrayList<Student> list) {
		String name, addr, phone;
		
		System.out.print("등록할 학생의 이름을 입력하세요: ");
		name = sc.next();
		System.out.print("등록할 학생의 주소을 입력하세요: ");
		addr = sc.next();
		System.out.print("등록할 학생의 전화번호을 입력하세요: ");
		phone = sc.next();
		
		
		Student s = new Student(name, addr, phone);
		list.add(s);
		System.out.println("학생의 정보를 등록하였습니다.");
	}

}
profile
꾸준히 성장하는 개발자✨

0개의 댓글