• 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
379 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,073 wizyt
pytanie zadane 4 października 2018 w C i C++ przez jarekmarek Nowicjusz (120 p.)
0 głosów
1 odpowiedź 350 wizyt
pytanie zadane 31 maja 2019 w Java przez Łukasz880525 Początkujący (250 p.)
0 głosów
1 odpowiedź 493 wizyt
pytanie zadane 20 października 2018 w Java przez mn130496 Gaduła (3,530 p.)

93,607 zapytań

142,529 odpowiedzi

322,999 komentarzy

63,097 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

Kursy INF.02 i INF.03
...