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

Člen

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Koukal jsem na ten kod dobrou minutu a neprisel jsem na co ten cyklus tam vubec je. Ten cyklus je tam naprosto zbytecne, protoze bud tu hodnotu vratis, nebo vyhodis vyjimku, takze se ten kod vykona jen jednou a do-while je tam zbytecne tak jako jakykoliv jiny cyklus.
EDIT:// ted jsem si vsimnul ze tam vlastne mas 2x try-catch
Zvyšok proramu je usposobený na to, že za každých okolností dostane
validné číslo.
Preto je to celé v metóde, lebo budem potrebovať také číslo na viacerých
miestach programu, tak sa mi zdá zbytočné zakaždým vypisovat rovnaké try -
catch atd
K editu:
Javu sa učím len 3 dni, a zatial som nedošiel na to, ako ošetrit viacero
rôznych prípadov výnimky (len jeden )
Ja mam ted hlavu plnou C++ takze me napadaji reseni, ktera v Jave nejsou
mozna. Ale mas tam par chyb. Staticky metody nepouzivej, pokud k tomu nemas
zatracene dost dobrej duvod. Metoda rika ze vraci byte pritom vracis integer. V
seznamu paramatru nemas uveden typ streamu, takze to beztak ani nemas
zkompilovany.
A na jednu metodu to dela az moc veci, takze se blbe da premyslet nad zbaveni
cyklu.
EDIT:// ten edit z minuly postu je spatne, mas tam 1 try-catch a jedno vyhozeni. Jinak v jave na vic vyjimek je multicatch
catch (IOException|SQLException ex) {
...
}
To už som medzitým opravil
Aký typ metody by to teda mal byt?
Po 3 dnech jsi jeste asi na OOP v jave nenarazil co? No vysvetlovat to tu
nebudu, jsou tu na to tutorialy, radsi to nech static, ale rychle pak bez na OOP
at se to odnaucis
Jinak k tomu tvemu kodu, udelal bych si urcite jeste jednu metodu na kontrolu jestli je to vyparsovany cislo.
public static boolean isNumeric(String str){
try{
int i = Integer.parseInt(str);
}catch(NumberFormatException nfe){
return false;
}
return true;
}
public static int getInt(nejakej stream){
String input;
do{
System.out.println("Enter horizontal shift(Possible value: -26 < x > 26):");
input = stream.getLine();
}while(!(isNumeric(input) && ((given_num > -26) && (given_num < 26))));
return Integer.parseInt(input);
}
Proč nepoužíváš
stream.nextInt()
?
udělá dost práce za tebe.
Nemila situace, tim padem ta metoda bude skareda. Ale cim vic metod tim vic
java Takze
private static boolean isNumeric(String str){
try{
int i = Integer.parseInt(str);
}catch(NumberFormatException nfe){
return false;
}
return true;
}
private static int parseInt(nejakej stream){
String input;
do{
System.out.println("Enter horizontal shift:");
input = stream.getLine();
}while(!isNumeric(input));
return Integer.parseInt(input);
}
public static int getInt(nejakej stream){
int result;
do{
System.out.println("Possible value: -26 < x > 26");
result = parseInt(stream);
}while(!((given_num > -26) && (given_num < 26)));
return result;
}
To vypadá strašně. Strašný je však i požadavek. Zítra možná něco vymyslím, co bude krátké, jednoduché a elegantní.
Urcite to jde 100x lip, ja se jen ridil puvodnim kodem abych mu tam nepridaval zbytecne moc veci navic. Kdyby pouzival nextInt, nemusel bych pouzivat kontrolu jestli je vstup doopravdy cislo, ktera by sla i lepe pres regex, nebo formater, ktery nevyhazuje vyjimku.
Kdyz se tak koukam tak jsem zase nechal v tom kodu given_num misto nej mel byt result.
Právě proto si to nechám na zítřek. Také mi to dnes už moc nemyslí.
Zbavil bych se i objektu stream, protože není ošetřen stav, pokud ho uživatel uzavře bez zadání vstupu. Chce to prostě celé předělat a hlavně zjednodušit.
Zobrazeno 12 zpráv z 12.