|
Kordian - 27 Maj 2004, 07:41 Witam, Czy może ktoś dojrzy błąd, którego ja nie widzę. Otóż poniższy przykład czyta ____________________________________________________________________ class read_file { public void readFile () { int count = 0; l.close(); public static void main(String[] args) { } ______________________________________________________________ Nie wiem zupełnie o co chodzi :( Pozdr Jarus - 27 Maj 2004, 08:01 Witam a metoda readline(), ktora wolasz u siebie 2 razy czasem nie przesuwa Jarek
Witam, Czy może ktoś dojrzy błąd, którego ja nie widzę. Otóż poniższy przykład ____________________________________________________________________ class read_file { public void readFile () { int count = 0; l.close(); public static void main(String[] args) { Nie wiem zupełnie o co chodzi :( Pozdr -- Kuba - 27 Maj 2004, 08:21 Tu czytasz "kolejna linie": System.out.println("Did line number: " + wystarczy System.out.println("Did line number: " + pzdr, Gambit - 27 Maj 2004, 08:12
while ((line = l.readLine()) != null) { // process the line System.out.println("Did line number: " + l.readLine() + " " + count++); W System.out.println() jak sądzę chciałeś użyć "line" zamiast "l.readLine()". Pozdrawiam! Kordian - 27 Maj 2004, 08:20 Dziękuję! Kurcze ale błąd... <zawstydzony:)) Jarek Ratajski - 27 Maj 2004, 09:03 Dziękuję! Kurcze ale błąd... <zawstydzony:)) To jeszcze oducz się na początek tak pisać: ((line = l.readLine()) != null) ^^^^^^^^^^^^^^^^^^^^^^ i będziesz miał mniej takich problemów. Piotr Maj - 27 Maj 2004, 09:49 To jeszcze oducz się na początek tak pisać: ((line = l.readLine()) != null) ^^^^^^^^^^^^^^^^^^^^^^ i będziesz miał mniej takich problemów. Możesz rozwinąć temat. Co takiego złego jest w tej linijce? Jarek Ratajski - 27 Maj 2004, 11:26 | To jeszcze oducz się na początek tak pisać: | i będziesz miał mniej takich problemów. Możesz rozwinąć temat. Co takiego złego jest w tej linijce? Formalnie jest dobra. Jak widac jednak na załączonym obrazku - są ludzie, którym to zaciemnia. Uważam za bardziej czytelną konstrukcję typu: for (String line = l.readLine(); line!=null; line = l.readLine() ) {...} Cała konstrukcja IMO wywodzi się z C, gdzie w zasadzie wystarczy Nie ma się co tu rozpisywac i robić flejma - to są gusta w dużym stopniu. Krzysztof Rudnik - 27 Maj 2004, 11:47 | To jeszcze oducz się na początek tak pisać: | i będziesz miał mniej takich problemów. | Możesz rozwinąć temat. Co takiego złego jest w tej linijce? Formalnie jest dobra. Jest dluzsza - 2 razy wystepuje takie samo podstawienie - lepiej tego unikac, bo mozna przypadkiem jedno poprawic a drugie nie. Cała konstrukcja IMO wywodzi się z C, gdzie w zasadzie wystarczy Ja bardzo lubie C wlasnie za to ze nie musze powtarzac czesci petli drugi raz poza petla. A ostrzezenie gcc da zeby dac jeszcze jedne nawiasy bo jest podstawienie Krzysiek Rudnik jarekr - 27 Maj 2004, 12:55 | Jak widac jednak na załączonym obrazku - są ludzie, którym to zaciemnia. | Uważam za bardziej czytelną konstrukcję typu: | for (String line = l.readLine(); line!=null; line = l.readLine() ) {...} Jest dluzsza - 2 razy wystepuje takie samo podstawienie - lepiej OK. Kłocić sie nie będe bo to gusta troche. Odsyłam do google i hasła: "coding style guides java" dużo jest opisane na te tematy - są ludzie, którzy uznali, że czasem lepiej jest dodać jedną/dwie linijki, aby poprawić czytelnośc - i warto nawet o tym popisać w guidach. Jak sądzę mieli jakies powody (oparzenia III-go stopnia?), żeby się tak męczyć (w sensie pisać). Przykład z jednej ze stron tak wyszukanych: http://geosoft.no/javastyle.html: 53. Executable statements in conditionals must be avoided. file = openFile (fileName, "w"); // NOT: if ((file = openFile (fileName, "w")) != null) { if (file != null) { // : : // } } Conditionals with executable statements are simply very difficult to read. This is especially true for programmers new to Java. -- jarekr Piotr Maj - 27 Maj 2004, 12:20 Formalnie jest dobra. Jak widac jednak na załączonym obrazku - są ludzie, którym to zaciemnia. Uważam za bardziej czytelną konstrukcję typu: for (String line = l.readLine(); line!=null; line = l.readLine() ) {...} Masz rację... nie ma co robić kolejnego flame war'a. Powiem tylko, że konstrukcję z while spotkasz wszędzie (w każdym tutorialu i w większości kodu operującego na strumieniach), natomiast powyższego dziwoląga chyba tylko w Waszym zespole (ja co prawda mało w życiu widziałem, ale powyższe widzę pierwszy raz). Nie mówię, że tak nie można, albo, że to jest jakaś siara - po prostu powyższy kod jest dość ... nietypowy i IMHO wcale nie bardziej czytelny. A błąd kolegi, który ponownie wywołał readLine() wcale nie zostałby Proponuję EOT. Piotr Lipski - 28 Maj 2004, 03:35 for (String line = l.readLine(); line!=null; line = l.readLine() ) {...} Zaletą tej konstrukcji jest deklaracja zmiennej line jako lokalnej, używanej wewnątrz pętli. Nie jest zaśmiecana przestrzeń nazw, nie ma niebezpieczeństwa nieświadomego ponownego użycia line poza pętla bez odpowiedniej inicjacji. PL odpowiednik 'sound(Hz); nosound()' w javie? pobieranie danych z bazy w mysql i wysylanie danych do plikow w javie swing Co piszecie w Javie. Jakie problemy rozwiązujecia za pomoca tego języka ?? Czy możliwe jest skompilowanie programu napisanego w Javie do postaci *.exe ? |