Java známky s vahami v poli

Java Základní konstrukce Zdrojákoviště Java známky s vahami v poli

Ukazkový kód polí v javě.

Jde o ukázkový kód polí ne nejlepšího kódu :), ale když najdete nějakou chybku/CHYBU tak mi ji prosím napište děkuji. :))

Stručný popis programu:

  1. načítáme známku pokud je větší jak 0 a menší jak 5 a váhu pokud je větší jak 0 a menší jak 3
  2. pote přidělíme do proměnných znamka, vaha už konkrétní vyčíslení z polí
  3. po dokončení zadávání se vypíše uživateli obsah pole (v podstatě to co zadal) a poté se vypíše průměr
import java.util.Scanner;

/**
 *
 * @author Atom
 */
public class Znamka {
    // tridni promene
    private static int[] znamky;
    private static int[] vahy;
    private static Scanner scanner;

    public static void main(String[] args) {
        scanner = new Scanner(System.in);   // icicializujeme scanner
        double znamka = 0, vaha = 0; //promenne ve kterych budou celkove vypocty

        System.out.print("Zadej pocet znamek k prumerovani: ");
        znamky = new int[scanner.nextInt()]; // nacitani delky pole uzivatelem
        vahy = new int[znamky.length]; // delku pole znamek zname tak tuto delku priradime i do pole vah

        for( int i =0; i < znamky.length ; i++ ){ //cyklus ktery bezi do delky pole znamek
            do{ //zacatek cyklu 'nejdriv delej pak testuj podminku'
                System.out.print("Zadej "+ (i+1) +". znamku:");
                znamky[i] = scanner.nextInt(); // cteme znamku
                System.out.print("Zadej "+ (i+1) +". vahu:");
                vahy[i] = scanner.nextInt(); // cteme vahu
                        }while( (0 > znamky[i] || znamky[i] > 5) || (0 > vahy[i] || vahy[i] > 3) ); // podminka budeme takdouho zadavat dokud nebude znamka mensi jak 5 a vaha jak 3
            znamka += znamky[i] * vahy[i]; //prirazeni znamky vynasobenou vahou na pozici i do promene v mainu
            vaha += vahy[i]; //prirazeni vahy na pozici i do promene v mainu
        }

        System.out.println("\nZadano znamek:" + znamky.length + "\n"); // vypis delky pole

        for( int i = 0; i < znamky.length ; i++ ){ //cyklus, ktery bezi do delky znamek (znamky.lenght => delka pole znamek)
            System.out.println( (i+1) + ". Znamka:" + znamky[i] + ", vaha: " + vahy[i]); //vypis znamky a vahy na pozici [i]
        }

        System.out.println("\nPrůměr = " + znamka/vaha); //vypis prumeru
    }
}

Galerie


 

  Aktivity (1)

Program pro vás napsal Opus
Avatar
Autor se od svých 14ti let věnuje všemožnému co se týká IT oblasti. Jeho oblíbené programovací jazyky jsou C# a Java. Studuje střední školu informačních technologií v Brně, Purkyňově 97 ulici.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 



 

 

Komentáře

Avatar
ninja řízek
Neregistrovaný
Avatar
ninja řízek:

co kdybys taky napsal něco jako kódy java v kostce
stále něco takového hledám už jsem i pochopil jak s s ní pracuje ale je tady na ní málo tutoriálů :(

 
Odpovědět 17.3.2012 7:22
Avatar
Kit
Redaktor
Avatar
Kit:

Některé komentáře mi připadají jako opisování programu, asi by jich mělo být méně kvůli přehlednosti.

Dvojitý cyklus je pro mne vždy varováním, že možná něco není v pořádku. Program je sice funkční, ale přehledné to není.

Počet známek na začátku byl možná v zadání úlohy, ale v praxi to obvykle předem nevíme. Zkus to upravit tak, aby např. při zadání známky "0" se ukončilo načítání a vypsal se výsledek.

Oprav si nadpis.

Zkus to napsat bez použití pole. De facto je zbytečné.

Odpovědět 17.3.2012 9:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Opus
Redaktor
Avatar
Odpovídá na Kit
Opus:

Program jsem psal jako ukázku pracování s poli... přepisovat to nebudu je to stejně k ničemu kromě podívání jak se dá pracovat s poli a
"Dvojitý cyklus je pro mne vždy varováním, že možná něco není v pořádku." a jak by jsi pracoval s 2-3-4 rozměrným polem?

Odpovědět 17.3.2012 21:29
Všichni jsou blázni, někteří říkají že jsou aji letadla, ale já jsem jen ponorka.<br />Všichni kopírují odevšec...
Avatar
Kit
Redaktor
Avatar
Odpovídá na Opus
Kit:

Chtěl jsi názory a já jsem je napsal. Nalož s nimi tak, jak uznáš za vhodné.

Už jsem dělal i s 5rozměrným polem a také jsem si poradil. V tomto případě je vnitřní cyklus zbytečný, ale to je jedno.

Nemám rád vnořené cykly, protože zdržují zpracování programů. Cykly používám jen tam, kde jsou skutečně nezbytně nutné. Pokud se dají nahradit nějakou konstrukcí, která je součástí jazyka, tak toho vždy využiji.

Odpovědět 17.3.2012 21:50
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Opus
Redaktor
Avatar
Odpovídá na Kit
Opus:

Jop díky. Vim že by se to dalo jednoduše upravit. A k těm komentářům ty tam jsou jen proto aby pochopili činnost i ti kteří programovat neumí.

Odpovědět 19.3.2012 10:13
Všichni jsou blázni, někteří říkají že jsou aji letadla, ale já jsem jen ponorka.<br />Všichni kopírují odevšec...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.