Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 10. diel - Cyklus for v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Miroslav Melzer:2.10.2016 11:54

Snažim si procvičovat co jsem se dosud naučil, ale tohle svoje cvičení nějak nemůžu dotáhnout. Potřeboval bych poradit jestli to s dosavadníma znalostma( tj. 6 lekce) můžu dokončit. Nechci poradit jak to vyřešit, baví mě se s tím trápit, ale zase abych u toho nezůstal do smrti....Jde o jednoduchou kalkulačku pro sázkaře tedy s jedinou funkcí, pronásobit zadané kursy a opakovat to dle libosti uživatele.Cílem je získat výsledný kurs pro třeba deset událostí (čísel).
Došel jsem sem :

Scanner sc= new Scanner(System.in, "Windows-1250");
String dalsi = "a";
while(dalsi.equals("a"))
{

System.out.println("zadej kurs");
float kurs = Float.parseFloat(sc.nextLine());

  float vysledek = kurs;

 System.out.printf("Celkový kurs je zatím %.2f ", vysledek);
 System.out.println("další ? a/n");
 dalsi = sc.nextLine();
 dalsi= dalsi.toLowerCase();

\---

což funguje dobře až na to že to nepronásobuje ty kursy.....:)
Jdu na to zbytečně složitě ? Nebo mi zatim ještě nějaká znalost chybí k úspěchu?

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:2.10.2016 12:51

Jestli dobře chápu, tak to má nějak zpracovávat více čísel, které se navzájem ovlivňují, když jich je více (promiň, že to říkám tak složitě, ale snažím se být obecný,když si nedokážu zaboha představit, jak s tím souvisí přímé dosazování, jestli to tam máš schválně nebo... no, to je jedno). Tak jako tak, ano, umíš to řešit, akorát jsi zapomněl na jednu drobnost, napovím: "Lokálnost" proměnných ;)

Avatar
Odpovedá na pocitac770
Miroslav Melzer:2.10.2016 16:49

Děkuju za snahu pomoct, ale zatim mě to moc nenakoplo...

Avatar
Odpovedá na Miroslav Melzer
Miroslav Melzer:3.10.2016 15:24

Mělo by to fungovat takhle:

System.out.println("zadej kurs");
     float a =Float.parseFloat(sc.nextLine());

     System.out.printf("celkový kurs je zatím %.2f ",a);
     System.out.println("zadej další");

      float b =Float.parseFloat(sc.nextLine());
      System.out.printf("celkový kurs je zatím %.2f ",a*b);
      System.out.println("zadej další");

      float c =Float.parseFloat(sc.nextLine());
      System.out.printf("celkový kurs je zatím %.2f ",a*b*c);
      System.out.println("zadej další");
         }
run:
zadej kurs
1.58
celkový kurs je zatím 1,58 zadej další
1.26
celkový kurs je zatím 1,99 zadej další
1.8
celkový kurs je zatím 3,58 zadej další
BUILD SUCCESSFUL (total time: 18 seconds)

Těch případů (kursů) by tam mělo jít vložit kolik bude uživatel chtít.
Ale nedokážu to napasovat do nějakýho toho cyklu.
Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:3.10.2016 16:30

Otázka. Potřebuješ na každou hodnotu novou proměnnou? Vždyť ji použiješ jen jednou, pokaždé použiješ její hodnotu vynásobenou nějakým číslem, potom výsledek vynásobený dalším číslem, atd atd. A k tvému původnímu problému, proměnné, které jsou uvnitř cyklu mají trvání pouze po dobu jednoho opakování, pak se načtou znovu, ale ty, co jsou mimo něj si poslední uloženou hodnotu pamatují, ať jsi cyklů udělal kolik chceš. Popřemýšlej nad tím ;)

Avatar
Odpovedá na pocitac770
Marian Benčat:3.10.2016 16:46

to by byla samozřejmě pravda, kdyby to byla pravda... :-) Java nerozlišuje z hlediska bytecodu jestli je proměnná uvnitř cyklu, nebo vně.. pořád generuje stejný bytecode.. Programátorská poučka však je, že by se proměnná měla definovat co nejblíže použití. Takže správně je naopak dávat proměnnou dovnitř cyklu.

" premature optimization is the root of all evil (or at least most of it) in programming." -Donal Knuth

Editované
Odpovedať
Totalitní admini..
Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Marian Benčat
pocitac770:3.10.2016 17:17

Ano, ale on se snaží najít způsob, jak něco udělat, a jestli sis toho nevšiml, tak já se mu snažím napovědět jak, sám řekl, že nechce přímé řešení

Editované
Avatar
Odpovedá na Marian Benčat
Miroslav Bejlek:3.10.2016 17:26

Pokud definuji proměnnou uvnitř cyklu, tak po opuštění cyklu ztratím údaje té hodnoty. Jak mohu tuto proměnnou použít o opuštění cyklu?

Avatar
Odpovedá na pocitac770
Miroslav Melzer:4.10.2016 19:17

Ne, nechápu to co s tim mam udělat....

String dalsi = "a";
   while(dalsi.equals("a"))
   {
    System.out.println("zadej kurs");
    float a = Float.parseFloat(sc.nextLine());
    System.out.println("Celkový kurs je zatím " + a);
    System.out.println("další ? a/n");

    dalsi = sc.nextLine();
    dalsi= dalsi.toLowerCase();
   }

Tyhle věci se mi tam musí opakovat :zadej kurs +celkovy je....+ další a/n
musí tam bejt i ten vstup uživatele, jestli teda cyklus s dalším během načte novou zadanou hodnotu....
Ale jak mam dát jinou proměnnou mimo cyklus, když musí pracovat s tou proměnnou "a" ?
A jak potom změnim ten -Celkový kurs je ..."a" ?

Avatar
pocitac770
Tvůrce
Avatar
Odpovedá na Miroslav Melzer
pocitac770:4.10.2016 19:22

K proměnným vně cyklu můžeš přistupovat i zevnitř (ovšem ne naopak), vždyť jsi to i udělal s proměnnou "dalsi"

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 153.