안녕하세요
먼저 제가 작성한 코딩부터 설명드릴게요
텍스트파일을 하나 읽어오고나서
이번에는 keywords파일을 읽어와요
그리고 텍스트파일을 하나의 결과물을 생성합니다.
그럼 기존 읽어본 텍스트파일에서 keywords에 있는 단어들이면
괄호를 추가로 넣어줍니다.
예를들어 읽어온 텍스트파일에 java라는 글자가 있으면 이런식으로<java>로 출력되게합니다.
근데 제가 지금 작성한 코드에는 ArrayBoundaryException이 나는데
이 오류가 당연한거라고 생각하거든요?
if문에서 비교를 하는데 하나는 keywords를 읽어서 담은 배열 크기는 49이고
텍스트파일에서 한줄한줄 읽은건 크기가 그보다작거나 클수있자나요
그래서 방법이 잘못되었다고 생각이 드는데
좀더 효율적인 방법이 있을까요?
public static void main(String[] args) {
BufferedReader br = null;
InputStreamReader isr = null;
FileInputStream fis = null;
PrintWriter outputStream = null;
String temp = "";
int count = 0;
int arrcnt=0;
String content = "";
String[] key=new String[100];
try {
System.out.print("읽어올 파일을 써주세요:");
Scanner s = new Scanner(System.in);
String InputFile = s.next();
File file = new File(InputFile);
fis = new FileInputStream(file);
isr = new InputStreamReader(fis, "UTF-8");
br = new BufferedReader(isr);
System.out.print("키워드 파일을 입력해주세요:");
Scanner s3 = new Scanner(System.in);
String keyword = s3.next();
Scanner s1 = new Scanner(new File(keyword));
while(s1.hasNext()){//keyword 파일을 배열에 저장
key[arrcnt++]=s1.next();
}
System.out.println(arrcnt);
System.out.print("결과파일의 이름을 입력해주세요");
Scanner s2 = new Scanner(System.in);
String OutputFile = s2.next();
outputStream = new PrintWriter(OutputFile);
String kwalho1="<";
String kwalho2=">";
while ((temp = br.readLine()) != null) {
String key1[]=temp.split("");
for(int i=0;i<key.length;i++){
if(key[i].equals(key1[i])){
content+=kwalho1+key[i]+kwalho2;
}else{
content+=key[i];
}
}
} //이부분이 문제라고 생각합니다. 좀더 효율적인 알고리즘은 어떤걸까요?
outputStream.println("<pre>");
outputStream.print(content);
outputStream.println("</pre>");
긴글 읽어주셔서감사합니다.