• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamykanie BufferedReader - Java

VPS Starter Arubacloud
0 głosów
390 wizyt
pytanie zadane 14 marca 2016 w Java przez anhydryt Początkujący (290 p.)

Cześć wszystkim :)

Na początku przepraszam, za styl w jakim jest to napisane, ale cały czas się uczę (uwagi, zrypki bardzo proszę!). W poniższym kodzie, nie wiem jak zamknąć BufferedReader. Pętla IF nie działa. Próbowałem zrobić też w while( i != -1), ale to także nie działa.

Dziekuje za zaangażowanie i pomoc.

Pozdrawiam

 

package Zadania;
import java.io.*;
public class sredniaArytmetyczna {

    public static void main(String[] args) {
    
    double wynik = 0;    
    double srednia = 0;
    double n = 1;
    double i = 0;    
    
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        try {
            
            while (true) {
                System.out.println("Podaj liczbę:");
                i = Double.parseDouble(reader.readLine());
                
                System.out.println("Podana liczba: " + i);
                
                wynik += i++;                
                System.out.println("Suma: " + wynik);
                
                srednia = (wynik/n);
                System.out.println("Średnia arytmetyczna: " + srednia);
                
                if(i == -1) {
                    reader.close();
                    System.out.println("Koniec"); break;
                }
                n++;
            }
            System.out.println(wynik);
            
            
        } catch (IOException e) {
            System.out.println("Błąd: " + e);
        } catch (NumberFormatException e) {
            System.out.println("Błąd formatu " + e);
        }
    }
}

 

3 odpowiedzi

+1 głos
odpowiedź 14 marca 2016 przez iwan9449 Pasjonat (20,810 p.)
Nie rozumiem czemu nie użyjesz po prostu klasy Scanner?

Ps: IF nie jest pętlą.

Pozdrawiam!
komentarz 15 marca 2016 przez anhydryt Początkujący (290 p.)
Fakt, moja pomyłka.

Chciałem skorzystać z tej klasy, bo słyszałem że często jest wykorzystywana.
komentarz 16 marca 2016 przez efiku Szeryf (75,160 p.)
Jeżeli chce czytać z pliku linia po linii to BufferedReader jest okej ale właśnie tu Scanner będzie lepszy :)!

http://docs.oracle.com/javase/6/docs/api/java/io/BufferedReader.html
+1 głos
odpowiedź 15 marca 2016 przez Porcupine Nałogowiec (31,560 p.)

W linii 22. robisz: wynik += i++; co zwiększa wartość zmiennej: i z minus jeden na zero. 
Musisz zmienić warunek w if'ie na i == 0 :) 

Pozdrawiam,

komentarz 15 marca 2016 przez anhydryt Początkujący (290 p.)
Dzięki :)

A mam pytanie, czy da się jakoś wprowadzić by przy łańcuchu np. ''quit'' kończył program? Próbowałem, ale wyskakuje błąd NumberFormatException.

Pozdrawiam :)
komentarz 15 marca 2016 przez Porcupine Nałogowiec (31,560 p.)
Hmmm... Mógłbyś na przykład tego: reader.readLine() nie rzutować od razu na double'a, tylko na początek przypisać do Stringa i robić coś w stylu: if ( twojString.equals("quit") ) { break; }

A dopiero później, jeśli powyższy warunek nie zajdzie, zamieniałbyś tego Stringa na double :)

Pozdrawiam,
0 głosów
odpowiedź 15 marca 2016 przez Mar Cin Dyskutant (8,900 p.)

System.out.println("Podaj liczbę:");
                i = Double.parseDouble(reader.readLine());
               
               if(i==-1){

              System.exit(0);//zrobiłbym to tak w sytuacji gdzy chodzi Ci o
                                        //zakonczenie dzialania programu
           }

wynik += i++;
wynika+=i;  //bez postinkrementacji i

 

Podobne pytania

0 głosów
1 odpowiedź 1,007 wizyt
pytanie zadane 7 sierpnia 2018 w SPOJ przez Piotr Błaszczak Bywalec (2,890 p.)
+1 głos
1 odpowiedź 473 wizyt
pytanie zadane 29 czerwca 2018 w C i C++ przez ernest52 Początkujący (450 p.)
0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 9 marca 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...