자바

JAVA STEP 44. File 입출력 예제

2023. 2. 27. 18:40
728x90

★ 예제 1) 

  • 요구사항 : 특정 이름을 찾아 다른 이름으로 변환 후 파일을 다른 이름으로 저장하시오.
  • 조건
    • '유재석' -> 메뚜기
    • 저장할 파일명 : 이름수정_변환.dat
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

public class Q0120 {

	public static void main(String[] args) {
		
		//m1();
		m2();
	}

	private static void m2() {
			
		try {
				
				BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Downloads/파일_입출력_문제/이름수정_변환.dat"));
				
				String line = null;
				
				while ((line = reader.readLine()) != null) {
					
					System.out.println(line);
					
				}
				reader.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		
	}

	private static void m1() {
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/이름수정.dat"));
			BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/이름수정_변환.dat"));
			
			String line = null;
			int lineNumber = 0;
			
			while ((line = reader.readLine()) != null) {
				line = line.replace("유재석", "메뚜기");
				writer.write(line);
			}
			reader.close();
			writer.close();
			
			System.out.println("완료");
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
		

}
  • 실행결과
  •  

예제 1 실행결과

 

★ 예제 2)

  • 요구사항 : 숫자를 한글로 바꾼 뒤 파일을 다른 이름으로 저장하시오.
  • 조건
    • 0 → 영, 1 → 일 ... 9 → 구
    • 저장할 파일명: 숫자_변환.dat
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

public class Q0121 {
	
	public static void main(String[] args) {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/숫자.dat"));
			BufferedWriter writer = new BufferedWriter(new FileWriter("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/숫자_변환.dat"));
			
			String line = null;
			
			while ((line = reader.readLine()) != null) {
				line = line.replace("0", "영");
				line = line.replace("1", "일");
				line = line.replace("2", "이");
				line = line.replace("3", "삼");
				line = line.replace("4", "사");
				line = line.replace("5", "오");
				line = line.replace("6", "육");
				line = line.replace("7", "칠");
				line = line.replace("8", "팔");
				line = line.replace("9", "구");
				writer.write(line);
			}
			reader.close();
			writer.close();
			
			System.out.println("완료");
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		m2();
	}
	private static void m2() {
		
		try {
				
				BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/숫자_변환.dat"));
				
				String line = null;
				
				while ((line = reader.readLine()) != null) {
					
					System.out.println(line);
					
				}
				reader.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		
	}

}
  • 실행결과
  •  

예제 2 실행결과

 

★ 예제 3) 

  • 요구사항 : 성적을 확인 후 합격자/불합격자 명단을 출력하시오.
  • 조건
    • 합격 조건: 3과목 평균 60점 이상
    • 과락 조건: 1과목 40점 미만
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;

public class Q0122 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		m1();
	}

	private static void m1() {
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/성적.dat"));
			
			String line = null;
			String pass = "[합격자]\n";
			String nopass = "[불합격자]\n";
			
			while ((line = reader.readLine()) != null) {
			
				String [] list = line.split(",");
				
				int kor = Integer.parseInt(list[1]);
				int eng = Integer.parseInt(list[2]);
				int math = Integer.parseInt(list[3]);
				
				int avg = (kor+eng+math)/3;
				
				if(kor>=40&&eng>=40&&math>=40&&avg>=60) {
					pass += String.format("%s\n", list[0]);
				}else {
					nopass += String.format("%s\n", list[0]);
				}
				
			}
			reader.close();
			
			System.out.println(pass);
			System.out.println(nopass);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
			
	}
	
	
	
}
  • 실행결과
  •  

예제 3 실행결과

 

★ 예제 4)

  • 요구사항 : 이름을 입력받아 회원 정보를 검색 후 출력하시오.
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;

public class Q0123 {

	public static void main(String[] args) {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/단일검색.dat"));
			
			String line = null;
			
			Scanner scan = new Scanner(System.in);
			
			System.out.print("이름 : ");
			String name = scan.nextLine();
			
			while ((line = reader.readLine()) != null) {
				
				String [] list = line.split(",");
				
				String number = list[0];
				String address = list[2];
				String call = list[3];
				
				if(list[1].equals(name)) {
					 System.out.printf("[%s]\n", list[1]);
					 System.out.printf("번호 : %s\n", list[0]);
					 System.out.printf("주소 : %s\n", list[2]);
					 System.out.printf("전화 : %s\n", list[3]);
					 break;
				}
				
			}
			reader.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}
  • 실행결과
  •  

예제 4 실행결과

 

★ 예제 5)

  • 요구사항 : 이름을 입력받아 회원 주문 정보를 검색 후 출력하시오.
  • 소스코드 
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Scanner;

public class Q0124 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		m1();
	}

	private static void m1() {
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/검색_회원.dat"));
			BufferedReader reader2 = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/검색_주문.dat"));
			
			String line = null;
			String line2 = null;
			
			Scanner scan = new Scanner(System.in);
			System.out.print("이름 : ");
			String name = scan.nextLine();
			String num = "";
			String address = "";
			
			String result = String.format("==== 구매 내역 ====\n"
										+ "[번호]\t[이름]\t[상품명]\t[개수]\t[배송지]\n");
			
			while ((line = reader.readLine()) != null) {
				
				String list [] = line.split(",");
				
				if(list[1].equals(name)) {
					num = list[0];
					address = list[2];
					break;
				}
			}
				
				if (!num.equals("")) {
					System.out.print(result);
					while ((line2 = reader2.readLine()) != null) {
						
						String list2 [] = line2.split(",");
						
						if(list2[3].equals(num)) {
							System.out.printf("%s\t%s\t%s\t%s\t%s\r\n"
											, list2[0]
											, name
											, list2[1]
											, list2[2]
											, address);
						}
						
					}
				
					
					
				
			}
			reader.close();
			reader2.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}

}
  • 실행결과
  •  

예제 5 실행결과

 

★ 예제 6)

  • 요구사항 : 모든 괄호가 서로 짝이 맞는지 검사하시오.
  • 조건
    • 대상 괄호 : (), {}
    • Stack 사용
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.Stack;

public class Q0125 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		m1();
	}

	private static void m1() {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/자바소스.java"));
			
			Stack<Character> stack = new Stack<Character>();
			
			String line = null;
			String Text = "";
			
			while ((line = reader.readLine()) != null) {
				
				Text += line + "\r\n";
				
			}
			reader.close();
			
			for(int i=0; i<Text.length(); i++) {
				
				char c = Text.charAt(i);
				
				if(c == '(' || c == '{') {
					stack.push(c);
				}else if(c == ')' || c == '}') {
					stack.pop();
				}
			}
			
			if(stack.size()==0) {
				System.out.println("올바른 소스 입니다.");
			}else {
				System.out.println("올바르지 않은 소스 입니다.");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	
		
	}
	
	

}
  • 실행결과
  •  

예제 6 실행결과

 

예제 7) 직원들의 지각과 조퇴를 카운트하시오.

  • 조건
    • 출근 : 오전 9시
    • 퇴근 : 오후 6시
  • 소스코드
  •  
package com.test.question;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;

public class Q0126 {

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

	}

	private static void m1() {
		
		try {
			
			BufferedReader reader = new BufferedReader(new FileReader("/Users/kimdaehwan/Desktop/Quest/파일_입출력_문제/출결.dat"));
			ArrayList<Employee> list = new ArrayList<Employee>();
			
			String line = null;
			String name = "";
			
			while ((line = reader.readLine()) != null) {
				
				String [] temp = line.split(",");
				
				Employee e = getEmployee(list, temp[1]);
				
				if(e==null) {
					e = new Employee(temp[1], 0, 0);
					list.add(e);
				}
				
				if(temp[2].compareTo("9:00")>0) {
					e.in++;
				}
				
				if(temp[3].compareTo("18:00")<0) {
					e.out++;
				}
				
			}
			
			System.out.println("[이름]\t[지각]\t[조퇴]");
			
			for(Employee e : list) {
				System.out.printf("%s\t%2d회\t%3d회\n"
								, e.name
								, e.in
								, e.out);
			}
			reader.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	private static Employee getEmployee(ArrayList<Employee> list, String name) {
		
		for(Employee e : list) {
			if(e.name.equals(name)) {
				return e;
			}
		}
		return null;
	}

}
class Employee {
	public String name;
	public int in;
	public int out;
	
	public Employee(String name, int in, int out) {
		this.name = name;
		this.in = in;
		this.out = out;
	}

	@Override
	public String toString() {
		return "[name=" + name + ", in=" + in + ", out=" + out + "]";
	}
	
}
  • 실행결과
  •  

예제 7 실행결과

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'자바' 카테고리의 다른 글

JAVA STEP 46. lambda  (0) 2023.02.28
JAVA STEP 45. LinkedList  (0) 2023.02.28
JAVA STEP 43. File 입출력  (0) 2023.02.27
JAVA STEP 42. 재귀 메소드  (0) 2023.02.27
JAVA STEP 41. File/Directory 조작 예제  (0) 2023.02.24
'자바' 카테고리의 다른 글
  • JAVA STEP 46. lambda
  • JAVA STEP 45. LinkedList
  • JAVA STEP 43. File 입출력
  • JAVA STEP 42. 재귀 메소드
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • JavaScript
  • 자바
  • it
  • ajax
  • 정보처리기사필기
  • 개발자
  • 데이터베이스
  • DB
  • 정보처리기사
  • jsp
  • 앱개발자
  • jquery
  • DBA
  • 코딩테스트
  • 정보보안전문가
  • IT개발자
  • 웹개발자
  • 웹페이지
  • IT자격증
  • java
  • 프론트엔드
  • React
  • 개발블로그
  • 백엔드
  • IT자격증공부
  • 백준
  • html
  • 웹개발
  • css
  • 알고리즘

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
JAVA STEP 44. File 입출력 예제
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.