[Day 11] 국비 0411 - 내용 정리
🌞파일 입출력
- 지금까지는 프로그램 실행한 결과를 화면에 출력하였다. 화면에 출력한 결과는 컴퓨터 전원을 끄면 사라지게 된다. ==> 휘발성
그래서 프로그램 실행한 결과를 영구적으로 보관하고자 한다면 파일로 출력할 수 있다. - 또, 지금까지는 프로그램 실행에 필요한 데이터를 키보드로부터 입력받았다. 필요하다면 프로그램 실행에 필요한 데이터를 파일로부터 읽어들일 수 있다.
🌞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("학생의 정보를 등록하였습니다.");
}
}
Author And Source
이 문제에 관하여([Day 11] 국비 0411 - 내용 정리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rlaehdus0417/Day-11-국비-0411-내용-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)