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

pętla w java

VPS Starter Arubacloud
0 głosów
505 wizyt
pytanie zadane 1 listopada 2018 w Java przez Loki12 Nowicjusz (160 p.)
Witam wszystkich

To są moje początki z programowaniem więc prosze owyrozumiałość. Mam zrobic prostą pętlę. Po uruchomieniu programu użytkownik po podaniu dowolnej liczby (jakielkojwiek, może byc -12345, 0 , czy 989875) ma otrzymać dzieisięc kolejnych pozycji np. jezeli poda 10, program wydrukuje 11,12,13 itd. Nie portafię zdefinować liczby początkowej,, tak aby to mogla być każda liczba i nie potrafię podać warunku takiego aby program podawał tylko 10 kolejnych pozycji od liczby podanej przez użytkownika.

jakieś podpowiedzi w jaki sposów to ugryść?
komentarz 1 listopada 2018 przez manjaro Nałogowiec (37,390 p.)
Jeżeli to do szkoły to zajrzyj do notatek, książek...

2 odpowiedzi

+2 głosów
odpowiedź 1 listopada 2018 przez Aisekai Nałogowiec (42,190 p.)

Najprościej:

1. Scanner do wczytania liczby (int) np do zmiennej "number"

2. Pętla od number do number + 10

for (int i = number; i<number+10; ++i)

3. Wypisz w pętli 'i'.

komentarz 1 listopada 2018 przez MarcinZielony Użytkownik (710 p.)

Ciężko się nie zgodzić, tylko napisał, ze jest zielony (o ironio ;), więc może nie wie co zrobić z klasą Scanner...

Scanner xxx= new Scanner(System.in);// tworzysz obiekt klasy Scanner do własnego użytku, czyli do odebrania informacji wchodzacej- dlatego System.in

System.out.println("podaj liczbe");// wypisujesz na ekranie
 int number= xxx.nextInt();// to taka bardzo uproszczona wersja. Jak chcesz,  żeby przeczytało tylko do spacji, to next() Jak potrzebujesz obsłużenia, żeby to na pewno była liczba, to już musisz bawić się z if-ami i przeczytać liczbę, jeżeli będzie liczbą, czyli jako ostatni warunek w pętli if.

xxx robi tutaj za pojemnik, w którym dostarczysz liczbę od której użytkowniek chce zacząć.

To tak pobieżnie. Jak coś to spokojnie pytaj.

 

 

1
komentarz 1 listopada 2018 przez mbabane Szeryf (79,280 p.)

A jak dla mnie to wypowiedź Aisekai jest wręcz wyczerpująca, ponieważ uważam, że jeśli ktoś potrafi znaleźć forum programistyczne, założyć na nim konto, napisać post, to tym bardziej będzie umiał wpisać w google -> co to jest klasa w Java, jak użyć klasy Scanner, jak w Java wypisać tekst na ekran, co to jest pętla itd.

I owszem można coś komuś wyjaśnić i rozszerzyć wypowiedź, ale tylko wtedy kiedy widać, że ktoś próbuje samodzielnie coś zrobić, a nie pisać post który defacto będzie niemal tutorialem (w szczególności w tematach/pytaniach o podobnym charakterze jak niniejsze).

komentarz 1 listopada 2018 przez MarcinZielony Użytkownik (710 p.)
Rozumiem Twoje podejście. Jest zasadne z tego punktu widzenia.

Odnośnie wyjaśniania komuś czegoś, to jednak myślę, że zawsze można, nawet jak trzeba napisać tutorial ;)

Nawet jeżeli, to dopóki nie zmieni swojej percepcji, to nic wielkiego nie osiągnię, a nawet z tej sytuacji wyszło coś pozytywnego...może przemyśli o czym piszemy i chciaż trochę zwiększy się jego świadomość. Zrobiłby pierwszy krok do wielkiej zmiany...czyli ściągnięcia bana z Google ;)

Pozdrawiam
komentarz 2 listopada 2018 przez Loki12 Nowicjusz (160 p.)

@Aisekai, Dziękuje bardzo za pomoc. Tak, czytałem notaki, tak wcześniej szukałem w google. Może po prostu jestem oporny. Aplikacja działa, ale nie jest wysłana jako zaliczenie. Było juz za późno w momęcie pisania na forum a chciałem to umieć napisać dla siebie. Generalnie robiłem błąd próbując żąglować cyframi zamiast wstawić zmienne (np własnie i, oraz number) Szczerze, podpowiedź pozwoliłą mi zrozumieć znacznie więcej niż to co było w pętli. A dla następnych gdyby ktoś utkął to jest to co ja robiłem i jest to źle:

 Scanner dataIn = new Scanner(System.in);

        System.out.println("This is counting program. Please enter starting number.");

       int i = dataIn.nextInt();

       System.out.println(" The starting number is " +i);

       for (i = 0; i<=10; i = i+1) 

System.out.println("Count is " +i);

 

ale jak mówiłem dopiero zaczynam i sporo przede mną.

0 głosów
odpowiedź 10 listopada 2018 przez Loki12 Nowicjusz (160 p.)

Pracuje nad kolejną pętla, która po podaniu nieprawidłowych danych powinna wyłączyc program. Niestety mimi komplacji nie działa. Powinna też wyswietlić komentarz w połowie odpowiedzi. nie bardzo wiem jak zdefiniować tę połowę. bardzo prosze o pompc.

import java.util.*;
public class countProgram
{
  public static void main ()  
    {
      Scanner dataIn = new Scanner(System.in);
      System.out.println("This program will print odd numbers between 0 and number you will enter.Program will run in number number range 0 and 1000");
      System.out.println("The number you will enter has to be integer number between 3 and 998");
      int number =dataIn.nextInt();
      if ((number <= 0) || (number >= 1000)){
    System.out.println("The number " + number + " is not valid");  
    System.exit(1);
}
System.out.println("The number you enter is " + number);
int i;
       
for (i = 0; i<=number ; i ++){ 
           
    if (i%2==1){
            System.out.println( +i);
        }
        if ((i % number ==1)&& (i !=0)){
        System.out.println("Done half of them");}
        }
}
}

 

1
komentarz 10 listopada 2018 przez mbabane Szeryf (79,280 p.)

Że tak powiem, w ifie występuje jeszcze (choć nie musi) blok else - doczytaj jak z tego skorzystać i pozbędziesz się w ten sposób linii:

System.exit(1);

W przypadku tak krótkiego kodu oczywiście nie ma to aż tak wielkiej wagi, ale nieco psuje przepływ całego kodu (w sensie gdy się go czyta).

Pomyśl przez chwilę co to jest połowa. (Jeśli i będzie równe połowie to wyświetl komunikat, polowe wyznacz przed wejściem do pętli).

To int i przed pętlą jest w tym przypadku zbędne, można zapisywać to tak:

for (int i = 0; i<=number ; i++)

 

Drobna uwaga jeszcze do samego posta, postaraj się aby kod choć trochę był sformatowany tak, aby widać było, która klamra zamykająca, należy do klamry otwierającej, bo przez chwilę myślałem, że main kończy się w 13 linii, np. w ten sposób:

import java.util.*;
public class countProgram
{
  public static void main ()  
  {
      Scanner dataIn = new Scanner(System.in);
      System.out.println("This program will print odd numbers between 0 and number you will enter.Program will run in number number range 0 and 1000");
      System.out.println("The number you will enter has to be integer number between 3 and 998");  
      int number =dataIn.nextInt();
      if ((number <= 0) || (number >= 1000)){
        System.out.println("The number " + number + " is not valid");  
        System.exit(1);
      }
      System.out.println("The number you enter is " + number);
      int i;
        
      for (i = 0; i<=number ; i ++){       
          if (i%2==1){
            System.out.println( +i);
          }
          if ((i % number ==1)&& (i !=0)){
           System.out.println("Done half of them");
          }
      }
  }
}

 

komentarz 10 listopada 2018 przez Aisekai Nałogowiec (42,190 p.)
Liczba o numerze number/2 będzie liczbą w połowie. Wyświetl komentarz, gdy "i" będzie równe "number/2" Tylko musisz wiedzieć, że nie zawsze number/2 będzie liczbą całkowitą (więc "jakoś" musisz pozbyć się tej części dziesiętnej (w sytuacji gdy użytkownik poda liczbę parzystą, będziesz miał nieparzystą ilość liczb). Możesz to zrobić na kilka sposobów:

1) Zaokrąglić. W dół czy w górę, to jak już uważasz.

2) Zrzutować do inta - wtedy "ucina" się część dziesiętną.
komentarz 13 listopada 2018 przez Loki12 Nowicjusz (160 p.)

Dziękuje za podpowiedź. Zrobiłem tak (tak mi sie wydaje ), ale komunikat za każdym razem wyswietla mi na początku wydruku. 

int i = 0;
int number2 = i/2;


       
for ( i = 0; i<=number ; i ++){ 
          
    if (i%2==1){
            System.out.println( +i);
        }
        if (i == number2){
        System.out.println("Done half of them");}
        
    }

    }

 

komentarz 13 listopada 2018 przez mbabane Szeryf (79,280 p.)

Hej kolego czy Ty w ogóle patrzysz co piszesz?

int i = 0;
int number2 = i/2

dzielisz i przez 2

komentarz 13 listopada 2018 przez Loki12 Nowicjusz (160 p.)
Dzięki, już poprawione. Najprostsze zawsze najgorzej zobaczyć....

Podobne pytania

+1 głos
2 odpowiedzi 163 wizyt
0 głosów
1 odpowiedź 800 wizyt
pytanie zadane 16 marca 2020 w C i C++ przez Oxhoft Nowicjusz (150 p.)
0 głosów
4 odpowiedzi 652 wizyt

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!

...