NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Sibenice - upload from file.txt

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jakub Málek
Člen
Avatar
Jakub Málek:20.1.2017 11:26

Ahoj,
vytvářím jednoduchou hru šibenici a potřebuji nahrát hádaná slova z textového souboru.
Nevím už co mám špatně hází mi to chybu :

Prosím o radu.

Chyba při četení ze souboru.
Exception in thread "main" java.lang.Run­timeException: Uncompilable source code - cannot find symbol
symbol: variable databaze
location: class sibenice.sibenice
at sibenice.sibe­nice.main(sibe­nice.java:40)
Java Result: 1

{
        String databaze [];
            databaze = null;
        int g = 0;
        String s;
        while ((s = br.readLine()) != null)
        {
            databaze [g] = s;
            g++;
        }
}
catch (Exception e)
{
        System.err.println("Chyba při četení ze souboru.");
}
 
Odpovědět
20.1.2017 11:26
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Jakub Málek
pocitac770:20.1.2017 11:32

Moc nechápu tuto část kódu, co znamená

String databaze [];
databaze = null;

Jednak z mě neznámého důvodu doplňuješ do proměnné null, což znamená, že ani pole používat nemůžeš (o což se pokoušíš o pár řádků níže), a to předtím vypadá na popletený zápis pole

String[] databaze;
 
Nahoru Odpovědět
20.1.2017 11:32
Avatar
Jakub Málek
Člen
Avatar
Jakub Málek:20.1.2017 13:45

Děkuji za opravu, ale i po opravě mi to hází stejnou chybu.
Také se dívám, že v původním kódu jsem nezkopíroval první řádek :)
ještě jsem přesunul inicializování proměnné string nad to vytahování ze souboru.

        String[] databaze;
        databaze = new String[20];
        try (BufferedReader br = new BufferedReader(new FileReader("Slova.txt")))
{
        String s;
        int g=0;
        while ((s = br.readLine()) != null)
        {
            databaze[g] = s;
            g++;
        }
}
catch (Exception e)
{
        System.err.println("Chyba při četení ze souboru.");
}
 
Nahoru Odpovědět
20.1.2017 13:45
Avatar
Odpovídá na Jakub Málek
Erik Šťastný:20.1.2017 14:11

Nejsem žádný Javista, ale připadá mi to nějaké zmatené. Neměla by syntaxe try vypadat takhle?

try
{
        otevriSoubor("soubor.dat");
        Zapis("blabla");
}
catch (Exception e)
{
        System.out.println("Chyba při zápisu do souboru.");
}

.... Aha tak nic od Java7 to jde i tak jak píšeš ty. :)

Editováno 20.1.2017 14:13
 
Nahoru Odpovědět
20.1.2017 14:11
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Jakub Málek
pocitac770:20.1.2017 14:37

Tak jako tak, když se podíváš na tu chybu, tak tam máš
location: class sibenice.sibenice
at sibenice.sibe­nice.main(sibe­nice.java:40)
To číslo označuje řádek, co na něm máš? (Když jsi pozměnil kód, tak se to mohlo změnit). A máš to vše v mainu nebo rozstrkané do tříd a metod?

Editováno 20.1.2017 14:38
 
Nahoru Odpovědět
20.1.2017 14:37
Avatar
Jakub Málek
Člen
Avatar
Jakub Málek:20.1.2017 15:04

Po upravě mi to hlásí chybu na 41. řádku, ale před tím než jsem přidal načítání ze souboru vše fungovalo.

boolean pokus = false; // 38
String pismena = ""; // 39
String slovo = databaze[(int)(Math.random()*databaze.length)];  // 40
char[] postup = new char[slovo.length()]; // 41
for (int i = 0; i != slovo.length();i++) // 42
    postup [i] = '-'; // 43
 
Nahoru Odpovědět
20.1.2017 15:04
Avatar
Odpovídá na Jakub Málek
Erik Šťastný:20.1.2017 15:13

Nauč se prosím postovat to včetně té chyby :)

 
Nahoru Odpovědět
20.1.2017 15:13
Avatar
Jakub Málek
Člen
Avatar
Jakub Málek:20.1.2017 22:28

Myslel jsem to tak, že jsem něco odřádkoval v horní části souboru a že tato část se mi tím pádem posunula o řádek níž. Tedy tato část kódu nebyla od založení tohoto tématu pozměněna.

 
Nahoru Odpovědět
20.1.2017 22:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.