반응형

문제

텍스트 파일에 있는 단어를 검색하는 프로그램을 작성해보자. 실행 예시는 프로젝트 폴더 밑에 자신이 작성한 자바 파일( 예 : test.java )을 복사하여 두고 읽은 경우이다.

 

출력 예시

전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.
대상 파일명 입력>> test.java
검색할 단어나 문장>> void
4: public static void main(String[] args) {
검색할 단어나 문장>> int
9: System.out.println("전체 경로명이 아닌 파일 이름만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다."); 11: System.out.print("첫 번째 파일 이름을 입력하세요>>");
14: System.out.print("두 번째 파일 이름을 입력하세요>>");
17: System.out.print(src + "와 " + dst + "를 비교합니다.");
22: System.out.println("파일이 같습니다.");
24: System.out.println("파일이 다릅니다.");
29: System.out.println("입출력 오류가 발생했습니다.);
39: int srcCount=0, destCount;
49: for (int i=0; i<srcCount;i++) {
검색할 단어나 문장>> for
49: for (int i=0; i<srcCount;i++) {
검색할 단어나 문장>> 그만
프로그램을 종료합니다.

 

소스 코드

import java.io.*;
import java.util.*;
public class Main12 {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileReader fin = null;
		BufferedReader bf = null;
		System.out.println("전체 경로명이 아닌 파일 이르만 입력하는 경우, 파일은 프로젝트 폴더에 있어야 합니다.");
		System.out.print("대상 파일명 입력>> ");
		Scanner s = new Scanner(System.in);
		String file = s.nextLine();
		Vector<String> v = new Vector<String>();
		try {
			fin = new FileReader(file);
			bf = new BufferedReader(fin);
			String Line = "";
			while((Line = bf.readLine()) != null) {
				v.add(Line);
			}
			fin.close();
			bf.close();
		}catch(IOException e) {
			System.out.println("입출력 오류");
			return;
		}
		while(true) {
			System.out.print("검색할 단어나 문장>> ");
			String word = s.nextLine();
			if(word.equals("그만")) {
				System.out.println("프로그램을 종료합니다.");
				break;
			}
			for(int i =0;i<v.size();i++)
			{
				if(v.get(i).contains(word)) {
					System.out.printf("%3d:",i);
					System.out.println(v.get(i));
				}			
			}
		}
        s.close();
	}

}

 

 

반응형
반응형

문제

words.txt 파일(출판사 홈페이지에 자료로 제공. 현재 이 문제의 정답 프로젝트에도 있음)에 한 라인에 하나의 영어 단어가 들어 있다. 이 파일을 한 라인씩 읽어 Vector<String>에 라인별로 삽입하여 저장하고, 영어 단어를 입력받아 그 단어로 시작하는 모든 단어를 벡터에서 찾아 출력하는 프로그램을 작성하라.

 

출력 예시

프로젝트 폴더 밑의 words.txt 파일을 읽었습니다.
단어>>lov
lov
lovebird
lovelorn
단어>>kitt
kitten
kittenish
kittle
kitty
단어>>ajlfasf
발견할 수 없음
단어>>그만
종료합니다...

 

소스 코드

(저는 따로 파일을 만들어 txt파일을 관리하기 때문에 경로를 설정해주지만 작업하는 파일 내에 작업하시면 따로 경로없이 txt파일만 쓰시면 됩니다. ex - FileReader("words.txt"); )

import java.io.*;
import java.util.*;
public class Main11 {
	public static void main(String[] args) {
		FileReader fin = null;
		BufferedReader bf = null;
		Vector<String> v = new Vector<String>();
		Scanner s = new Scanner(System.in);
		
		try {
		fin = new FileReader("파일 경로\\words.txt");
		bf = new BufferedReader(fin);
		String Line = " ";
		System.out.println("프로젝트 폴더 밑의 words.txt 파일을 읽었습니다...");
		while((Line = bf.readLine())!=null) {
			v.add(Line);
		}
		bf.close();
		fin.close();
		}catch(IOException e) {
			System.out.println("입출력 오류");
		}
		while(true) {
			int count = 0;
			System.out.print("단어>>");
			String word = s.next();
			if(word.equals("그만")){
            	System.out.println("종료합니다...");
				break;
			}
            for(int i = 0;i<v.size();i++)
			{
				if(word.length() <= v.get(i).length()){
					if(v.get(i).substring(0, word.length()).equals(word)) {
						System.out.println(v.get(i));
						count++;
					}
				}
			}
			if(count == 0)
				System.out.println("발견할 수 없음");
				
		}
		
		s.close();
	}
}

words.txt
0.22MB

생능 출판사 홈페이지의 words.txt파일입니다.

 

보조자료에 파일 다운 받으시면 실습문제 홀수 답지 있습니다.

https://www.booksr.co.kr/html/book/book.asp?seq=697068

 

명품 JAVA Programming(개정4판)

명품 자바를 사랑해주시는 많은 교수님들과 독자들께 감사드립니다. 2017년 7월에 개정3판이 나오고, 두 달도 지나지 않아 Java 9가 출시되었습니다. 그리고 급기야 올해 3월에는 Java 10이 출시되었

www.booksr.co.kr

 

반응형
반응형

문제

전화번호를 미리 C:\temp\phone.txt 파일에 여러 개 저장해둔다. 이 파일을 읽어 다음 실행 예시와 같은 작동하는 검색 프로그램을 작성하라.

 

출력 예시

총 7개의 전화번호를 읽었습니다.
이름>> 최박사
010-2222-3333
이름>> 백점만
011-1100-1100
이름>> 이상아
찾는 이름이 없습니다.
이름>> 이상형
010-3333-4444
이름 >> 그만

 

소스 코드

import java.io.*;
import java.util.*;

public class Main10 {
	public static void main(String[] args) {
		
		FileReader fin = null;
		BufferedReader bf = null;
		String Line = "";
		Scanner s = new Scanner(System.in);
		HashMap <String,String> HM = new HashMap<String,String>();
		try {
			fin = new FileReader("파일 경로\\phone.txt");
			bf = new BufferedReader(fin);
			while((Line = bf.readLine() )!= null) {
				String[] temp = Line.split(" ");
				HM.put(temp[0],temp[1]);
			}
			fin.close();
			bf.close();
		}catch(IOException e)
		{
			System.out.println("입출력 오류");
		}
		System.out.println("총 "+HM.size()+"개의 전화번호를 읽었습니다.");
		while(true) {
			System.out.print("이름>> ");
			String name = s.nextLine();
			if(name.equals("그만"))
				break;
			System.out.println(HM.get(name));
		}
		s.close();
	}

}

phone.txt
0.00MB

반응형

+ Recent posts