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

Pętla while się zapętla

0 głosów
395 wizyt
pytanie zadane 24 listopada 2018 w Java przez Dudek Początkujący (370 p.)

Witam wszystkich, 

Napotkałem się na problem przy zadaniu 



Program wchodzi w nieskończoną pętlę w WHILE'u. Podaję tam wartość inną od 6, np 1 i program w nieskończoność zaczyna wypisywać "0". Czy powinienem tam użyć jakiegoś "break;", żeby wykonało mi się to tylko raz?

 

import java.util.Scanner;

public class Zadania4 {

	public static void main(String[] args) {

		System.out.println("zadanie 3");
		
		System.out.println("1. X");
		System.out.println("2. X+1");
		System.out.println("3. X-1");
		System.out.println("4. X*2");
		System.out.println("5. X=0");
		System.out.println("6. Zakoncz");
		
		System.out.println("Podaj wartosc: ");

		Scanner sc = new Scanner(System.in);
		int wartosc = sc.nextInt();
		
		int x = 0;
		
		
		
		while (wartosc != 6)
		{
			
			if (wartosc == 1)
				System.out.println(x);
			else if (wartosc == 2)
				x++;
			else if (wartosc == 3)
				x--;
			else if (wartosc == 4)
				x = x * 2;
			else if (wartosc == 5)
				x = 0;
			else
				System.out.println("wartosc poza zakresem. Wybierz watosc ponownie");
			
		}
			
	}
}

Macie jakiś pomysł na to, żeby daną instrukcję wykonał tylko raz? 
Z góry dziękuję za wszystkie podpowiedzi :)

3 odpowiedzi

0 głosów
odpowiedź 24 listopada 2018 przez X3h Dyskutant (9,540 p.)
wybrane 24 listopada 2018 przez Dudek
 
Najlepsza
Wrzuć wartosc = sc.nextInt(); pod linię 39.
0 głosów
odpowiedź 24 listopada 2018 przez sefir Dyskutant (8,560 p.)

Czytaj wartości nie przed tylko w pętli, o tak:

import java.util.Scanner;
 
public class Zadanie4 {
 
    public static void main(String[] args) {
 
        System.out.println("zadanie 3");
         
        System.out.println("1. X");
        System.out.println("2. X+1");
        System.out.println("3. X-1");
        System.out.println("4. X*2");
        System.out.println("5. X=0");
        System.out.println("6. Zakoncz");
         
        System.out.println("Podaj wartosc: ");
 
        Scanner sc = new Scanner(System.in);
        int wartosc = 0; 
         
        int x = 0;
         
         
         
        while (wartosc != 6)
        {
            wartosc = sc.nextInt();
            if (wartosc == 1)
                System.out.println(x);
            else if (wartosc == 2)
                x++;
            else if (wartosc == 3)
                x--;
            else if (wartosc == 4)
                x = x * 2;
            else if (wartosc == 5)
                x = 0;
            else
                System.out.println("wartosc poza zakresem. Wybierz watosc ponownie");
             
        }
             
    }
}

 

0 głosów
odpowiedź 24 listopada 2018 przez Snejki Stary wyjadacz (14,520 p.)
przywrócone 24 listopada 2018 przez Snejki

Troszkę chyba nie zrozumiałeś zadania, bo pętli masz użyć w momencie gdy użytkownik wprowadza swoją wartość.

Możesz więc spróbować coś takiego: 

do
{
int wartosc = sc.nextInt();
// tu jeszcze komunikat z prośbą o wprowadzenie ponownie wartosci
}
while(wartość < 0 || wartosc > 6)

potem już poza pętlą dodajesz swoje stworzone warunki bez ostatniego else'a

 

Podobne pytania

0 głosów
2 odpowiedzi 1,089 wizyt
pytanie zadane 4 października 2018 w C i C++ przez jarekmarek Nowicjusz (120 p.)
0 głosów
1 odpowiedź 365 wizyt
pytanie zadane 31 maja 2019 w Java przez Łukasz880525 Początkujący (250 p.)
0 głosów
1 odpowiedź 501 wizyt
pytanie zadane 20 października 2018 w Java przez mn130496 Gaduła (3,570 p.)

93,632 zapytań

142,556 odpowiedzi

323,056 komentarzy

63,139 pasjonatów

Advent of Code 2025

Top 15 użytkowników

  1. 2900p. - dia-Chann
  2. 2870p. - DziarnowskiJ
  3. 2827p. - Łukasz Piwowar
  4. 2783p. - raydeal
  5. 2758p. - Adrian Wieprzkowicz
  6. 2713p. - rucin93
  7. 2579p. - Łukasz Eckert
  8. 2523p. - Maurycy W
  9. 2459p. - CC PL
  10. 2082p. - Michal Drewniak
  11. 1885p. - robwarsz
  12. 1851p. - Mariusz Fornal
  13. 1811p. - rafalszastok
  14. 1600p. - Rafał Trójniak
  15. 1588p. - Tomasz Bielak
Szczegóły i pełne wyniki

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

Kursy INF.02 i INF.03
...