Aneb, co dělat, když si myslím, že je má domácí úloha správně, ale validátor mé přesvědčení nesdílí.
Rychlá navigace:
Hlášení validátoru:
Chyba při běhu
Program způsobil při svém běhu následující výjimku:
java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:817)
Pravděpodobná příčina:
V programu je metoda, vytvářející Scanner, např.:
public static int nacti(String vyzva) { System.out.print(vyzva); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); return n; }
Tato metoda je pak opakovaně volána z main()
.
Prakticky to znamená, že pro každý vstup se vytváří JINÝ objekt Scanneru.
Pokud program spouštíte lokálně, toto plýtvání zdroji nevadí, protože vstup je vždy nakonec klávesnice.
Ve validátoru je však vstup přesměrován ze souboru. Tento soubor je jednou otevřen při prvním
new Scanner
a pro další otevření je zablokován.
Způsob nápravy:
Vytvořte Scanner pouze jednou.
Buď použijte řešení z přednášek na str. 76 nebo na str. 84.
Hlášení validátoru:
Chyba při validaci
Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Unknown Source)
Pravděpodobná příčina:
Způsob nápravy:
Scanner sc = new Scanner(System.in); sc.useLocale(Locale.US);
Hlášení validátoru:
Chyba při validaci
Exception in thread "main" java.lang.NoClassDefFoundError: Ppa1_cv02_0_A08B0000P (wrong name: cv02/Ppa1_cv02_0_A08B0000P)
Pravděpodobná příčina:
Soubor byl pravděpodobně vytvářen v Eclipse a obsahuje navíc příkaz package
.
package cv02; public class Ppa1_cv02_0_A08B0000P { ... }
Způsob nápravy:
Odstranit řádku package
.
[nahoru]
Hlášení validátoru:
Špatný vstup serveru
Pravděpodobná příčina:
Špatně zadané jméno zdrojového souboru.
Zákeřné chyby jsou:
0
(nula) za O
(velké o)Ppa1_cv04_01_A08B0000P.java
Ppa1_cv4_1_A08B9999P.java
Ppa1_cv02_1_A08B0000P.java
PPA1_CV02_1_A08B0000P.java
Ppa_cv4_01_A08B0000P.java
Další časté chyby jsou např. špatná koncovka souboru (často soubor .class
), vynechání čísla či písmena v osobním čísle.
Způsob nápravy:
Jméno souboru zkopírujte ze zadání domácí úlohy a pečlivě změňte pouze vaše osobní číslo.
Hlášení validátoru:
Chyba při validaci
Program proběhl správně, jeho výstup však není v pořádku. Pro zadané vstupy byly vygenerovány
jiné výstupy, než jaké poskytl vzorový program. Nezapomněl(a) jste do výstupu uvést klíčový řetězec '---Vysledky---' ?
Pravděpodobná příčina:
Buď jste zapomněli vypsat řetězec ---Vysledky---
nebo výsledky skutečně neodpovídají.
Validátor ve výpisu označuje červeně text od prvního rozdílného znaku.
Zákeřné chyby jsou:
a + b
místo a + b
a+b
místo a + b
---Vysledky----
Způsob nápravy:
Pečlivě zkontrolujte výstup vašeho programu s ukázkou výstupu nebo výstupem referenčního programu.
Také vyzkoušejte program i pro jiné než vzorové hodnoty, hlavně takové, které by mohly způsobavat problémy.
Hlášení validátoru:
Chyba při validaci
Výstup vašeho programu:
Main method not public.
Pravděpodobná příčina:
Třída neobsahuje platnou metodu public static void main(String[] args)
.
public class Ppa1_cv02_0_A08B0000P { static void main(String[] args) { ... } }
Způsob nápravy:
Doplňte public
.
Hlášení validátoru:
Vypršení času (timeout)
Pravděpodobná příčina:
V programu je cyklus, který má špatnou ukončovací podmínku, tj. program se nezastaví.
Nebo délka vypisovaných řetězců (nejspíše vypisovaných jako úvodní texty před zadáváním vstupů)
je neúměrně velká (stovky znaků). Případně se tyto řetězce vypisují v cyklu.
Způsob nápravy:
Prověřit ukončovací podmínku cyklu.
Zkrátit vypisované řetězce.
[nahoru]
Popis chyby:
Na Portálu je můj program odevzdán jako validovaný, ale v celkových přehledech není uveden buď vůbec nebo jako chybně validovaný.
Pravděpodobná příčina:
V názvu souboru jste se spletli ve svém osobním čísle a tento soubor byl odmítnut.
Způsob nápravy:
Pečlivě napište své osobní číslo do názvu souboru a odevzdejte tento soubor na Portál ještě jednou.
Popis chyby:
Na Portálu je můj program odevzdán jako validovaný, ale když kliknu na výsledek, dostanu hlášení:
WARNING on line 49 in : warning: unmappable character for encoding UTF8
Pravděpodobná příčina:
Ve zdrojovém kódu jsou použity akcentované znaky. Vadí jak ve výpisech, tak i (kuriózně) v komentářích (musely by být v kódování UTF-8).
Způsob nápravy:
Odstranit všechny akcentované znaky ze zdrojového kódu.
Popis chyby:
Na Portálu je můj program odevzdán jako validovaný, ale při kliknutí na odkaz "zelené fajfky" v odevzdaných úkolech vypíše:
Chybi resource: html.nadpis
Pravděpodobná příčina:
Ti, kterým se to stalo měli buď anglický prohlížeč nebo prostě v portálu nastavenou angličtinu. Validačni server totiž podporuje vícejazyčnost, tj. ve vstupu validace lze určit jazyk, kterým bude validačni server na klienta mluvit. Teď je na validačním serveru zatím jen český překlad s tím, že ostatní jazyky se dodělají dle potřeby.
Způsob nápravy:
Směrodatná informace je pro vás Portál. Máte-li tam zelenou fajfku OK, pak je vaše domácí úloha správně odevzdána.
(Správné odevzdání ale nevylučuje možnost pozdního odevzdání nebo shodných prací.)
Tato chyba by již neměla nastat.
[nahoru]