

zastavi se na spatnem radku
zdravim vas, potrebuju se zeptat, jak vyresit problem s nacitanim cisel v jave z txt... mam txt s cisly v radkach a uprostred je schvalne chyba, ze tam neni cislo typu int, ale tohle: 5o7, takze je v tom znak, me to do pole nacte vsechna cisla nad timto radkem a jakmile to narazi na tenhle, ulozi to 0 a do konce txt to uklada same 0. potreboval bych, aby to tenhle radek preskocilo (nebo tedy dosadilo tedy 0) a ve zbytku cisel (radku) pokracovalo v nacitani....diky moc...
tady mam kod:
import java.util.*;
import java.io.*;
public class Hory
{
private int[] poleCisel;
public void nactiCisla(String nazevSouboru)
{
int i = 0;
poleCisel = new int [20];
File f = new File(nazevSouboru);
Scanner sc = null;
try
{
sc = new Scanner(f);
while(sc.hasNextInt())
{
poleCisel[i] = sc.nextInt();
i++;
}
}
catch(FileNotFoundException e)
{
System.out.println("Soubor nelze nalezt");
}
}
}
jsem docela zacatecnik, tak prosim co nejjednoduseji vysvetlit, dekuju
http://chortle.ccsu.edu/java5/Notes/chap23/ch23_6. html
Takze to co pises neni pravda. ked to pride na znak ktory neni cislo tak to skonci (lebo hasNextInt vrati FALSE) a teda nedava to ziadne dalsie 0 do pola cisel.
Ked chces aby to preskakovalo znaky tak musis cyklus while urobit zlozitejsi, napr. inspiracia tu
http://www.java2s.com/Code/JavaAPI/java.util/Scann erhasNextInt.htm
Pouzivaj nejaku java referenciu alebo google, ked si nacpes do programu nejaku funkciu tak je nutne si precitat k nej referenciu aby si presne vedel co ti ta funkcia (a teda aj program) bude robit pri roznych (trebars aj chybnych) vstupoch. Nielen lepit to jak cierne skrinky.
P.S. a tvoj program ma IMHO dost vazny problem ak bude mat vstup viac ako 20 riadkov (v C by to bola zavazna bezpecnostna diera)
Zjistuji, ze neumet anglicky je vetsi a vetsi problem... nebo mi spis znalosti nestaci :(
ale zpet k problemu: v tom druhem odkazu jsem nejak nenasel, ze se tam resi muj problem, to je pouze metoda main k vypisu datovych typu?
riesi to tvoj problem. Ked nevies anglicky tak si to drbni aspon do translate.google.com
P.S. alebo aspon trochu uvazuj, to sa da aj bez anglictiny. Ked hasNextInt vrati false tak musis vybrat ten "zavadny" znak zo vstupu niecim inym, sam od seba sa ten znak zo vstupu nevypari.
ten preklad z googlu se da pochopit jen castecne...
promin, ale proste mi to neni moc jasny...
myslel jsem ale, ze by to mohlo jit vyresit tak, ze budou 2 while cykly, jeden bude zapisovat do radku s chybou a pak druhy do toho sameho pole, od policka kde skoncil prvni cyklus a od dalsi radky, pod chybnym radkem...
ale nevim, jak treba udelat, aby to zaclo cist az od toho napr. 7. radku, kdyz 6. je vadny...
ten java scanner cita sekvencne tak nemozes skakat kde ta napadne.
Jak sa to da robit ti uz napisal los vyssie. Je to vpodstate to same ako na co som dal ja link, akurat zjednodusene o ten boolean ktory ti netreba. A urcite to funguje. Ked ti to nejde tak si to asi aj blbo opisal :)
zacinam tomu pomalu prichazet na kloub, ale potrebuju, jestli bys mi nepopsal funkci toho ifu...
ja znam pouze if(P){}else{} a ne s tim else if, on v tom moc rozdil neni vid? ale nemuzu to pochopit :/
if = ak (jestli)
else = inak (jinak)
if(A)
PRIKAZ1
else if(B)
PRIKAZ2
else
PRIKAZ3
je:
ak(A) potom
PRIKAZ1
inak (t.j. ked nebolo splnene A) ak(B) potom
PRIKAZ2
inak (t.j. ak nebolo splnene ani A ani B)
PRIKAZ3
zatvorky sa pouzivaju ak napr. PRIKAZ1 je zlozeny z viac prikazov. Zatvorky mozes pouzit aj pre jeden prikaz, v tom pripade je to fuk ci ich tam das alebo nie. Preto los nedaval zatvorky ptz tam ma len jeden prikaz. Ked tam pridas dalsi prikaz napr. i++; osobitne tak musis uzavret sadu prikazov patriace pod if do zatvoriek { } .
takze to bude porad preskakovat na dalsi else if, dokud to proste nebude platit... diky
resp. ked chapes if(P){}else{}
tak musis chapat aj
if(P){}else{ if(P2){}else{} }
to je to iste ako
if(P){}else if(P2){}else{}
jo jasny, tohle uz viim
tak to jo, díky 