Kezdőoldal » Számítástechnika » Programozás » Miért nem írja ki a fájlból...

Miért nem írja ki a fájlból beolvasott számokat?

Figyelt kérdés

private static void filekez() {

try {

Scanner beolvas = new Scanner (System.in);

System.out.println("Adja meg a file nevet amiben az adatok vannak!");

String teglalap = beolvas.nextLine();

ArrayList<Integer> lista = new ArrayList();


FileReader fr = new FileReader(teglalap);

BufferedReader br = new BufferedReader(fr);

String adatok = br.readLine();

int szamok = Integer.parseInt(adatok);

lista.add(szamok);

int elso = lista.get(0);

int masodik = lista.get(1);


System.out.println("Terulet: " + (elso * masodik));

System.out.println("Kerulet: " + ((elso + masodik) * 2));


if (elso == masodik) {

System.out.println("Az adatok alapjan ez egy negyzet");

}

else {

System.out.println("Nem negyzet");

}



fr.close();

br.close();

}catch(Exception e) {}

}


És amikor elér oda a program, hogy kiírja a terület, kerületet, továbblép és nem csinál semmit csak kilép utána a metódusból. Mi ennek az oka?



2014. dec. 30. 21:40
1 2
 1/11 anonim ***** válasza:

Én nem is értem az egészet. Megpróbálsz beparsolni egy int-be 2 számot, aztán ezt az 1 db intet(!) berakni egy üres listába, amit utána megindexelsz 0-val meg 1-el is?

Most akkor hány számod van?

2014. dec. 30. 22:03
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
Töröld már ki ezt az okádékot és kezd előről.
2014. dec. 30. 22:09
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:

Egy kicsit zavarosak a fejedben a dolgok.

A parseInt metódus egy String formában levő számot alakít int-é (pl. "1234"-ből csinál 1234-et int típusban). De olyat nem tud, hogy több egymással szóközzel elválasztott számot beolvas. Ez abból is látszik, hogy csak egy int-et ad vissza, azaz EGY darab számot.

Mivel te két szóközzel elválasztott számot adsz a parseInt-nek, az hibát fog dobni, amit te szépen eltusolsz a catch blokkodban (ilyenkor illik kiíratni az exceptiont, hogy lásd ha valami hiba keletkezik, egyébként elég csak az IOException-öket elkapni).


Azt ajánlom a fájlból való olvasásra is a Scanner-t használd, sokkal egyszerűbb.

2014. dec. 30. 22:25
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:

Ne privátba kérdezz! Másnak is lehet, hogy segít a válasz, erre valók a fórumok.

Tehát így néz ki a beolvasás a file-ból:

Scanner sc = new Scanner(new File(teglalap));

int elso = sc.nextInt();

int masodik = sc.nextInt();

sc.close();

2014. dec. 31. 14:25
Hasznos számodra ez a válasz?
 5/11 A kérdező kommentje:

private static void filekez() {


try {

Scanner beolvas = new Scanner (System.in);

System.out.println("Adja meg a file nevet amiben az adatok vannak!");

String teglalap = beolvas.nextLine();

Scanner sc = new Scanner(new File(teglalap));



int elso = sc.nextInt();

int masodik = sc.nextInt();


System.out.println("Terulet: " + (elso * masodik));

System.out.println("Kerulet: " + ((elso + masodik) * 2));


if (elso == masodik) {

System.out.println("Az adatok alapjan ez egy negyzet");

}

else {

System.out.println("Nem negyzet");

}



sc.close();

}catch(Exception e) {}

}


Ha jól értelmezem akkor valahogy így kellene kinéznie a metódusnak, de a //Scanner sc = new Scanner(new File(teglalap)); résznél cannot find symbol-t ír akkor azt, hogy lehetne orvosolni?

2014. dec. 31. 16:08
 6/11 anonim ***** válasza:

Nem importáltad a File-t a java.io package-ből.


De írtam, hogy ne legyenek üres catch blokkjaid (csak ha jó okod van rá), mert nem árt, ha látod is, hogy miért nem csinál semmit a programod.

Most, hogy Scanner-eket használsz, már csak FileNotFoundException dobódik a Scanner konstruktorából, csak azt kapd el. Ha van kedved megcsinálhatod azt is, hogy FileNotFoundException esetén úrja bekérsz egy file nevet, mivel ugye a megadott nevű fájl nem létezik.

2014. dec. 31. 16:30
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:

Megcsináltam az importálást, meg a FileNotFoundException e-t és most meg ezt a hibát irta:

Exception in thread "main" java.util.InputMismatchException

at java.util.Scanner.throwFor(Unknown Source)

at java.util.Scanner.next(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at java.util.Scanner.nextInt(Unknown Source)

at sikidom_szamitas.filekez(sikidom_szamitas.java:20)

at sikidom_szamitas.kerdes1(sikidom_szamitas.java:92)

at sikidom_szamitas.menu(sikidom_szamitas.java:128)

at sikidom_szamitas.main(sikidom_szamitas.java:148)


Bocsi, hogy ennyit kérdezek, de még kezdő vagyyok és még csak tanulom a dolgokat, és köszi, hogy segítesz!

2014. dec. 31. 17:10
 8/11 anonim ***** válasza:

Próbáld meg értelmezni a hibát! Nézz utána, hogy mi az az InputMismatchException, sokkal gyorsabb mint itt válaszra várni.


Itt tömören le van írva, hogy mit jelent ez az Exception:

[link]


Akkor fog rendesen lefutni, ha a fájlodban nincs semmi más, csak a 2 db szám.

2014. dec. 31. 18:58
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:
Rendben most már működik csak úgy nem lehet megcsinálni, hogy a vesszőt is be lehessen írni a fileba?
2014. dec. 31. 20:23
 10/11 anonim ***** válasza:
De.
2014. dec. 31. 22:02
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!