Problem z wyjątkami [BlueJ]

0

Cześć!
Dopiero zaczynam zabawę z używaniem funkcji try, catch i finally. Nie wiem jak rozwiązać mój problem. Otóż kiedy biorę w try i catch jakąś część kodu, aby wyłapać wyjątek, gdyby wystąpił, i poza nimi mam kontynuację programu, to w tej kontynuacji niektóre zmienne są variable. Czyli domyślam się, że to co wewnątrz try i catch jest jakby odcięte od reszty programu, tylko jak sprawić, żeby były one znane kiedy wyjątek nie wystąpi? Myślałem, że finally służy do tego, jednak dalej zmienne są obce. Oto kod mojego programu:

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

public class Zadanie_01{
    public static void main(String []args){
        String wyraz="";
        System.out.println("ZADANIE NR 1 - LISTA 0");
        System.out.println();
        System.out.println("Podaj ścieżkę do pliku tekstowego: ");
        try{
            try{
                BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
                String b = a.readLine();
                FileReader d = new FileReader(b);
                FileReader g = new FileReader(b);
            }catch (FileNotFoundException e){
                System.out.println("Plik nie istnieje!");
                System.exit(1);
            }finally{
                System.out.println("Podaj wyraz, którego szukasz:");
                BufferedReader c = new BufferedReader(new InputStreamReader(System.in));
                wyraz = c.readLine();
                LiczbaSlow e = new LiczbaSlow();
                LiczbaPowtorzen f = new LiczbaPowtorzen();
                System.out.println("Ilość słów w tym pliku wynosi: "+liczbaSlow(d)+".");
                System.out.println("Liczba powtórzeń podanego wyrazu to: "+liczbaPowtorzen(g,wyraz)+".");
            }
        } catch (IOException ex){
            ex.printStackTrace();
        }
    }

    public static int liczbaPowtorzen(FileReader y, String wyraz){
        Scanner a = new Scanner(y);
        int ilosc = 0;
        while(a.hasNext()){
            if(a.next().equals(wyraz)) ilosc++;
        }
        a.close();
        return ilosc;
    }

    public static int liczbaSlow(FileReader a){
        int ilosc = 0;
        Scanner b = new Scanner(a);
        while(b.hasNext()){
            b.next();
            ilosc++;
        }
        b.close();
        return ilosc;
    }
}

Szukałem na google jednak nie znalazłem błędu, który popełniam. Prosiłbym o pomoc! :)

0

Deklaruj zmienne przed try, a w bloku try tylko nadawaj wartości.

0

Zadeklarowałem przed, jednak dalej ten sam błąd:

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

public class Zadanie_01{
    public static void main(String []args){
        String wyraz="";
        System.out.println("ZADANIE NR 1 - LISTA 0");
        System.out.println();
        System.out.println("Podaj ścieżkę do pliku tekstowego: ");
        BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
        String b;
        FileReader d;
        FileReader g;
        try{
            try{
                b = a.readLine();
                d = new FileReader(b);
                g = new FileReader(b);
            }catch (FileNotFoundException e){
                System.out.println("Plik nie istnieje!");
                System.exit(1);
            }finally{
                System.out.println("Podaj wyraz, którego szukasz:");
                BufferedReader c = new BufferedReader(new InputStreamReader(System.in));
                wyraz = c.readLine();
                System.out.println("Ilość słów w tym pliku wynosi: "+liczbaSlow(d)+".");
                System.out.println("Liczba powtórzeń podanego wyrazu to: "+liczbaPowtorzen(g,wyraz)+".");
            }
        } catch (IOException ex){
            ex.printStackTrace();
        }
    }

    public static int liczbaPowtorzen(FileReader y, String wyraz){
        Scanner a = new Scanner(y);
        int ilosc = 0;
        while(a.hasNext()){
            if(a.next().equals(wyraz)) ilosc++;
        }
        a.close();
        return ilosc;
    }

    public static int liczbaSlow(FileReader a){
        int ilosc = 0;
        Scanner b = new Scanner(a);
        while(b.hasNext()){
            b.next();
            ilosc++;
        }
        b.close();
        return ilosc;
    }
}
0

Kompilator Javy bywa upierdliwy, ale warto czytać ze zrozumieniem jego komunikaty.

        FileReader d=null;
        FileReader g=null;
0

Łooo taka prosta rzecz! Dzięki wielkie za pomoc, już wszystko działa! :)
Pozdrawiam!

1 użytkowników online, w tym zalogowanych: 0, gości: 1