Zasięg zmiennych - czegoś tu nie kumam..

0

Dawno nic w Javie nie robiłem, ale nie mogę zrozumieć czemu mam problem z zasięgiem zmiennych ..

Robiłem sobie coś takiego. ('zabawa' z python'em z poziomu Javy)..

Chodzi o zmienną String getDecodedString; którą deklaruje przed blokiem try-catch -- mianowicie jest ona niewidoczna w tym bloku i ostatecznie otrzymuje error związany z zasięgiem zmiennej .. dlaczego tak to jest? W C++ nie ma z czymś takim problemu.. (tzn. nie testowałem tego na bloku try-catch w cpp.. może ma on specyficzne właściwości..). W Javie pomaga zmienna prywatna, no ale...

import java.io.*;

public class PythonScript {
    //private String getDecodedString;
    public void Script() throws IOException
    {
        ProcessBuilder pb = new ProcessBuilder("python", "-i");

        Process p;
        p = pb.start();

        OutputStream stdin = p.getOutputStream();
        InputStream stdout = p.getInputStream ();

        OutputStreamWriter out = new OutputStreamWriter(stdin);

        out.write("print \'hello from python\'\n");
        out.write("2 + 2 \n");

        out.close();

        BufferedReader in = new BufferedReader(new InputStreamReader(stdout));
        String decodedString;
        String getDecodedString;     // <-- tutaj deklaruje zmienną
        try {
            while ((decodedString = in.readLine()) != null) {
                System.out.println(decodedString);
                getDecodedString = decodedString;  // <--
            }
        } catch (IOException e) {

        } finally {
            in.close();
        }

        System.out.println(getDecodedString ); //<-- problem ??

    }
}
1
 String getDecodedString=""; 
0

luul... Nie mam pytań :<

Swoją drogą .. dlaczego tak ? ;> (właściwość języka?.. )

0

Program ci mówił że jest szansa że zmienna nie zainicjalizowana, czytanie komunikatów ze zrozumieniem się kłania.

0

true, podziękował! .)

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