Dodaj do ulubionych

Problem z "prostą" operacją w Javie

IP: *.146.248.194.nat.umts.dynamic.t-mobile.pl 23.01.13, 11:43
Witam.

Od niedawna zacząłem uczyć się programowania w Javie, i w temacie tego języka jestem początkujący. Wcześniej trochę się "bawiłem" Turbo Pascalem, HTML-em i skryptami .bat.

Mam wydawałoby się banalny problem. Otóż: Potrzebuję "zapętlić" operację, która w przypadku wpisania przez użytkownika wartości dla zmiennej - zero, będzie powracać z powrotem do metody Scanner dotąd, aż użytkownik nie wpisze wartości zmiennej "a" różnej od zera. Okombinowałem się z pętlami "while" i "do - while" i nic to nie dało!
W pascalu nie sprawiło by mi to problemu:
"
repeat
write (' a= '); readln (a);
until a<>0;
"
I tyle!
Bardzo proszę o jakieś wskazówki.
Obserwuj wątek
      • Gość: grześko Re: Problem z "prostą" operacją w Javie IP: *.30.1.191.nat.umts.dynamic.t-mobile.pl 23.01.13, 16:53
        Problem z tym, że robiłem już tak skonstruowane operacje, jakie Pan tu pokazał. I w obydwu przypadkach (nieważne, czy to pętla "while", czy "do while") fragment programu zapętla się w nieskończoność przy zmiennej "a" równej 0.
        Mam taki fragment kodu:
        ...
        double a = in.nextDouble();
        while (a==0)
        {
        System.out.println("Błąd! A równe 0!");
        }
        System.out.println(a + " OK!");
        ...
        To samo się dzieje przy zastosowaniu pętli "do while".
        Chcę po prostu, aby program w razie spełnienia warunku a=0, wracał mi z powrotem do metody "Scanner", do wprowadzenia z konsoli odpowiedniej liczby.
        Sorry za moje lamerskie pytania, ale javy zacząłem się uczyć dopiero dwa miesiące temu i miałem nadzieję, że przełożenie kodu z pascala na Javę nie sprawi mi większej trudności - myliłem się.
        • wariant_b Re: Problem z "prostą" operacją w Javie 23.01.13, 19:16
          Fajnie - ale w przykładzie w pascalu w pętli czytasz nową wartość
          tak długo, aż nie będzie ona różna od zera.

          Natomiast w javie przed wejściem w pętle czytasz wartość, a potem,
          jeśli jest ona zerowa w nieskończoność wyświetlasz komunikat.
          W pętli po wyświetleniu komunikatu o błędzie przeczytaj nową wartość.
          • Gość: grześko Re: Problem z "prostą" operacją w Javie IP: *.204.32.51.nat.umts.dynamic.t-mobile.pl 24.01.13, 19:33
            Pan wybaczy, ale nie bardzo rozumiem. Problem w javie polega na tym, że nie mogę zdublować odczytu zmiennej a, przed pętlą i w pętli. Myślałem, że taki zapis w javie:
            ...
            do
            {
            double a = in.nextDouble();
            System.out.println("Błąd! a równe 0!");
            }
            while (a==0);
            ...
            spowoduje rozwiązanie problemu, ale kompilator wyświetla mi błąd, taki, że przy instrukcji "while" nie może rozpoznać zmiennej, co wg mnie jest dziwne, bo skoro napisałem polecenie "double a = in.nextDouble();", to chyba już ta zmienna ma jakąś postać. Nie rozumiem tego.
            • wariant_b Re: Problem z "prostą" operacją w Javie 24.01.13, 21:32
              Nie bardzo widzę jaką postać może mieć w tym przykładzie zmienna in typu scanner
              skoro jeszcze nic nie wklepałeś i nie sprawdziłeś, czy jest to coś typu double.

              import java.util.Scanner;
              ...
              Double a = 0;
              Scanner czytaj = new Scanner(System.in);

              while (a == 0) {
              System.out.println("Wprowadź nową wartość a: ");
              if (czytaj.hasNextDouble()) {
              a = czytaj.nextDouble();
              }
              else {
              System.out.println("Błędne dane!");
              break;
              }
              if (a==0) {
              System.out.println("Błąd! a równe 0!");
              }
              }

              ---
              Oj, chyba będę sobie musiał zainstalować środowisko do javy,
              żeby czegoś nie naknocić.
Inne wątki na temat:

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka