Program se nedokončí celý – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Program se nedokončí celý – Java – Fórum – Programujte.comProgram se nedokončí celý – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Marek
~ Anonymní uživatel
474 příspěvků
2. 11. 2014   #1
-
0
-

Ahoj všichni, potřebuji vypracovat tuto práci, ale proces skončí u výpisu "Hrubý s odečtem krve". Chci ale, aby pokračoval a dojel tedy k výpočtu finálního r. Nemůžu však najít, kde je zakopaný pes... Je mi jasný, že celý program se dal napsat i dost kratší - jsem začátečník... Díky za pomoc

public class pri_kaufmmar {

    static final int Vyšší = 40000;
    static final int Nižší = 20000;

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("Vítá vás centrální systém daňových zaznamů Bohemland");
        System.out.println("Pro pokračovaní zadajete prosím váš hrubý měsíční příjem");
        Scanner in = new Scanner(System.in);
        int plat = in.nextInt();
        System.out.println("Děkuji za zadaní" + plat);
        {
            int b = plat;
            if (plat < 0) {
                b = 0;
            } else {
                plat = b;
            }

            {
                System.out.println("Zadali jste záporné číslo, bude převedeno na 0.0");
            }
            System.out.println("" + b);
            b = abs(12 * plat);
            System.out.println("Dále prosím zadejte počet absolvovaných odběrů");
            Scanner a = new Scanner(System.in);
            int odber = a.nextInt();
            System.out.println("Děkuji za zadání");
            System.out.println("Pokud jste zadali počet odběrů více jak 12, bude upraven na 12");
            int c;
            if (odber > 12) {
                c = 12;
            } else {
                c = abs(odber);
            }
            {
                long e;
                e = b - (odber * 4000);
                System.out.println("Hrubý s odečtem krve" + e);
                long j = e;
                long f = 0;
                long z = 0;
                if (e > Vyšší) {
                    j = (e - 40000) * 100 / 65;
                    f = (20000) * 100 / 75;
                    z = (20000) * 100 / 15;
                } else if (e < Vyšší | e > Nižší) {
                    j = (e - 20000) * 100 / 75;
                    f = 20000 * 100 / 15;
                    z = 0;
                } else if (e < Nižší) {
                    j = (e) * 100 / 15;
                    f = 0;
                    z = 0;
                    long r = j + f + z;
                    System.out.println("Konečný výsledek" + r);

                }
            }
        }
    }
}

Nahlásit jako SPAM
IP: 78.102.160.–
Reklama
Reklama
lukas.balaz0
Super člen
2. 11. 2014   #2
-
0
-

Nabudúce môžeš kód vkladať ako CODE, bude čitateľnejší.

V C# nerobím, neviem čo tam znamená kód uzavretý v {} bez niečoho predtým (if, for atď.), ale nemyslím, že tam kde vypisuješ, že vstup je záporný, sa to správa tak, ako potrebuješ.

Mám pocit, že vôbec nejaký "Konečný výsledok" to dáva len vtedy, keď e<Nižší a zároveň neplatí (e < Vyšší | e > Nižší), čo sa mi zdá tiež sprostosť, lebo | je binárny operátor OR, || je booleanovský operátor OR, ale tu chceš asi použiť booleanovský operátor AND &&.

Možno nič z tohto nie sú chyby, keďže nerobím C#, ale pozri sa na to. Ak boli toto chyby, tak myslím, že je tam aj viac chýb, ktoré si všimnem, až keď to EDITneš a vložíš ako CODE.

EDIT: až teraz som si uvdomil, že je to Java .. tým pádom polovica čo som napísal stráca zmysal :D no nevadí ... stáva sa

Nahlásit jako SPAM
IP: 80.242.41.–
KIIV+42
God of flame
2. 11. 2014   #3
-
0
-

#1 Marek
no vypocet a vypis toho finalniho r mas jen v jedne z vetvi.. takze se prirozene nevypise v ostatnich..

#2 lukas.balaz
vypada to jako java, je to v sekci java, tudiz je to c#? :D

tem  { }  se rika blok prikazu - je to dobry treba pro omezeni platnosti promennych nebo tak.. v C++ se to hodi jeste mnohem vic, jakmile pouzivas RAII

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
lukas.balaz0
Super člen
2. 11. 2014   #4
-
0
-

#3 KIIV
:D :D sorry, ja som si zle prečítal v akej to je sekcii
a aj ostatné čo som popísal mám zle ??

(konkrétne to, že tam nemá byť | ale && a to, že to vypisovanie, že je vstup záporný je na zlom mieste .... ale je dosť možné, že aj to som sa pomýlil, o Jave viem ešte menej ako o C#)

OT otázka: aj v C++ dokážem len tak hocikde hodiť {} ?? lebo to už som raz googlil, ale nič som nenašiel

Nahlásit jako SPAM
IP: 80.242.41.–
KIIV+42
God of flame
3. 11. 2014   #5
-
0
-

#4 lukas.balaz
ano, ta podminka by mela byt opravdu s &&  (aby to platilo zaroven). Nevim jak v jave, ale v C/C++ jsou  | a ||  nebo  & a &&  ruzne operatory a delaji neco jineho - jedno je logicky soucet po bitech druhe je logicky soucet true/false (kde false je 0 a true cokoliv jineho)

{ } uplne vsude se nacpat nedaj, ale v normalnim kodu ano

pouzivalo se to treba k omezeni rozsahu platnosti promennejch pouzitejch v makru nebo ted pro treba zamky, kdy se to za { zamkne a po skonceni platnosti se to samo zase odemkne (a to plati i pro return, throw a jakykoliv vyskoceni z kontextu)

Nahlásit jako SPAM
IP: 94.113.95.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Marek
~ Anonymní uživatel
474 příspěvků
3. 11. 2014   #6
-
0
-

#3 KIIV
Dekuju za rychlou odpoved , ale nějak nevím jak to napravit, respektive význam toho co jsi napsal. Díky moc.

Nahlásit jako SPAM
IP: 147.32.218.–
KIIV+42
God of flame
3. 11. 2014   #7
-
0
-

#6 Marek
mas tam vetveni na tri sekce, vypocet a vypsani mas jen v jediny z nich a kvuli druhe podmince se tam nejspis ani nikdy nedostanes...

pritom bys mel mit idealne vypocet az pak na jednom miste

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Kit+11
Guru
3. 11. 2014   #8
-
0
-

#1 Marek
Zrovna na to zírám a divím se: Proč máš proměnné pojmenovány a, b, c, ...? Jak se v tom zmatku můžeš vyznat? Proč tam 2× otevíráš Scanner? Proč to neděláš objektově?

Vůbec z toho programu není patrné, proč tam dělíš 15, 65, 75,... Podle mne by se to mělo spíš násobit.

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Marek
~ Anonymní uživatel
474 příspěvků
3. 11. 2014   #9
-
0
-

#7 KIIV
myslis veškeré výpočty az na konci programu?

Nahlásit jako SPAM
IP: 147.32.218.–
Marek
~ Anonymní uživatel
474 příspěvků
3. 11. 2014   #10
-
0
-

#8 Kit
jsem totální nováček, chyby ještě budu dolazovat, s tím násobením mas potom asi pravdu. Proměnné tedy zkusim nějak logicky uspořádat.

Nahlásit jako SPAM
IP: 147.32.218.–
Kit+11
Guru
3. 11. 2014   #11
-
0
-

#10 Marek
Když už budeš dolaďovat ty chyby, podívej se i na konvence pro názvy tříd, metod a objektů. Třída by se neměla jmenovat "pri_kaufmmar", ale spíš "PriKaufmmar" - i když i tento název je podivný. Zřejmě ho máš jako povinný.

Určitě se při pojmenovávání vyhni zkratkám a drž se slovních druhů:

  • název třídy a objektu - podstatné jméno
  • název metody - sloveso
  • název interface - přídavné jméno

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Kit+11
Guru
3. 11. 2014   #12
-
0
-

#10 Marek
Jen tak pro zajímavost: Už víš, co se načte do proměnných, když dáš plat -30 000 a počet odběrů -30?

Nahlásit jako SPAM
IP: 147.229.242.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
lukas.balaz0
Super člen
3. 11. 2014   #13
-
0
-

no, to nacitavanie premennych a kontrolovanie spravnosti vstupu mas cele tak trochu zle urobene. najprv b=plat, potom ak b>0 tak das plat=b, co uz plati, a na konnci nech je vstup hocijaky vypises, ze je zaporny.

na konci prepises b na abs(12*plat), pricom plat je urcite rovnaky ako cislo, co bolo na vstupe, takze riadky pred tym stracaju zmysel.

a pri druhom citani si daj pozor na cisla mensie ako -12.

sorry sa diakritiku, na mobile sa mi neda pisat

Nahlásit jako SPAM
IP: 80.242.41.–
ingiraxo+15
Grafoman
3. 11. 2014   #14
-
0
-

#1 Marek
a jaký tam zadáváš hodnoty z konzole? páč ta podmínka na konci.. e < Nižší pravděpodobně moc často neprojde :) To znamená, že se program nedokončí celý

Trochu jsem se to snažil upravit, ale nechce se mi přemýšlet co je ta logika dole... 

public class Demo
{
    static final int MAX = 40000; // max ceho?
    static final int MIN = 20000; // min ceho?

    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);

        System.out.print("Hrubý měsíční příjem: ");
        int mesicniPlat = in.nextInt();

        if (mesicniPlat < 0) {
            mesicniPlat = -mesicniPlat;
        }
        int rocniPrijem = Math.abs(12 * mesicniPlat);

        System.out.print("Počet absolvovaných odběrů (0-12): ");
        int pocetOdberu = in.nextInt();

        if (pocetOdberu < 0) {
            pocetOdberu = 0;
        }
        if (pocetOdberu > 12) {
            pocetOdberu = 12;
        }

        // od teto chvile netusim co to je za humus...

        int e = (pocetOdberu * 4000) - pocetOdberu;
        System.out.println("Hrubý s odečtem krve: " + e);

        int j = e;
        int f = 0;
        int z = 0;

        if (e > MAX) {
            j = (e - MAX) * 100 / 65;
            f = MIN * 100 / 75;
            z = MIN * 100 / 15;

        } else if (e < MAX | e > MIN) {
            j = (e - MIN) * 100 / 75;
            f = MIN * 100 / 15;
            z = 0;

        } else if (e < MIN) {
            j = (e) * 100 / 15;
            f = 0;
            z = 0;
        }
        System.out.println("Konečný výsledek je: " + (j + f + z));
    }
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
lukas.balaz0
Super člen
3. 11. 2014   #15
-
0
-

#1 Marek
Poved nám, čo sa tam snažíš počítať (aspoň link, z ktorého máš tie vzorce), a urobíme ti aj tú druhú polovicu. Lebo teraz si nemyslím že to funguje.

Nahlásit jako SPAM
IP: 80.242.41.–
JiVi
~ Anonymní uživatel
11 příspěvků
7. 11. 2014   #16
-
0
-

takhle ? logiku vypoctu neresim, je to nejaky zmateny

public class pri_kaufmmar {

	static final int Vyšší = 40000;
	static final int Nižší = 20000;

	/**
	 * @param args
	 *            the command line arguments
	 */
	public static void main(String[] args) {
		System.out.println("Vítá vás centrální systém daňových zaznamů Bohemland");
		
		System.out.print("Pro pokračovaní zadajete prosím váš hrubý měsíční příjem: ");
		Scanner in = new Scanner(System.in);
		int plat = in.nextInt();		
		
		System.out.print("Dále prosím zadejte počet absolvovaných odběrů: ");
		int odber = in.nextInt();
		
		{			
			if (plat < 0) {
				plat = -plat;				
			}
			
			int rocniPlat = (12 * plat);
			
			if (odber > 12) {
				System.out.println("Pokud jste zadali počet odběrů více jak 12, byl upraven na 12.");
				odber = 12;
			}
			
			System.out.println("Plat " + plat);
			System.out.println("Odběry " + odber);	
			{
				long hrubySOdectemKrve;
				hrubySOdectemKrve = rocniPlat - (odber * 4000);
				System.out.println("Hrubý s odečtem krve: " + hrubySOdectemKrve);
				long j = hrubySOdectemKrve;
				long f = 0;
				long z = 0;
				if (hrubySOdectemKrve > Vyšší) {
					j = (hrubySOdectemKrve - 40000) * 100 / 65;
					f = (20000) * 100 / 75;
					z = (20000) * 100 / 15;
				} else if (hrubySOdectemKrve < Vyšší && hrubySOdectemKrve > Nižší) {
					j = (hrubySOdectemKrve - 20000) * 100 / 75;
					f = 20000 * 100 / 15;
					z = 0;
				} else if (hrubySOdectemKrve < Nižší) {
					j = (hrubySOdectemKrve) * 100 / 15;
					f = 0;
					z = 0;
				}
				long r = j + f + z;
				System.out.println("Konečný výsledek: " + r);				
			}
		}
	}

}
Nahlásit jako SPAM
IP: 194.228.23.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

Podobná vlákna

Pozadi pres cely monitor — založil dyžon

Konstanty pro celý Solution — založil Johny

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý