[Day 11]公費0411-内容整理


🌞ファイルI/O

  • これまで、プログラム実行の結果が画面に出力されていた.画面に出力した結果、パソコンの電源を切ると消えてしまいます.=>>きはつせい
    プログラムの実行結果を永続的に保存したい場合は、ファイルに印刷できます.
  • また、これまでキーボードからプログラムを実行するために必要なデータを受信してきました.必要に応じて、プログラムを実行するために必要なデータをファイルから取得できます.
  • 🌞java.io

  • シリーズパッケージ
  • 	읽는다. 출력한다 		==> 컴퓨터의 "메모리" 입장에서 따지는 것
    	읽는다.				==> 파일의 내용을 메모리로 읽어들인다.
    	출력한다. 				==> 메모리의 내용을 파일로 출력한다.

    🌞I/Oユニット


    🌈文字単位のI/O文字

  • 単位で入出力するので、手帳で確認できます.
  • 🌈バイトI/O

  • 図またはExcelファイルは、そのファイルを作成したプログラムからのみ取得でき、手帳では表示できません.このI/OはバイトレベルのI/Oと呼ばれます.
  • 🌞Java提供I/Oクラス


  • 文字単位の入力リーダー->FileReader

  • 文字単位の出力(一番早い)Writer->FileWriter

  • バイトで入力(一番早い)InputStream

  • バイト単位出力(最早)Output Stream
  • 🌞ストリーム(Stream)

  • データストリーム
  • 🌞グラフィックの表示

  • JPanalを継承し、新しいクラスを作成します.
  • ペイントコンポーネントをレンダリングすることによってグラフィックを表現します.
  • は、パネルを生成してフレームにアタッチする.
  • 🌞例


    🌟(画像)例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("학생의 정보를 등록하였습니다.");
    	}
    
    }