Этот код ниже является частью программы, которая найдет количество вхождений входного символа в текстовом файле
public static void main(String[] args){
[...]
java.io.File file1=new java.io.File(dirPath1);
FileInputStream fis = new FileInputStream(file1);
System.out.println(" return "+rec(sc.next().charAt(0),fis));
}
public static int rec (char ch, FileInputStream fis)throws IOException{
char current=0;
if(fis.available()==0){
return 0;
}
if(fis.read()!=-1){
current = (char) fis.read();
}
if(current==ch) {
return 1+rec(ch,fis);
}else
return rec(ch,fis);
}
}
Проблема:
Если файл имеетодин символ, и ch
= этот один символ.он возвращает 0, когда я проследил код, я обнаружил, что он не вводит if(current==ch)
.Несмотря на то, что они являются одним и тем же символом.
, если число символов больше одного, строки некоторых из них - символы совпадения - будут вводить if block
, а другие - нет.Как я могу это исправить?
Есть ли другой способ узнать количество вхождений рекурсивно ?
еще один вопрос: я должен использовать try
и catch
вrec
метод для отлова IOException
?
Заранее спасибо
PS Эта программа из задания, я должен использовать рекурсию и сравнить ее с итерацией.