Anonymní profil Martin – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Martin – Programujte.comAnonymní profil Martin – Programujte.com

 

Příspěvky odeslané z IP adresy 188.120.199.–

Martin
Java › Analýza textu
8. 5. 2016   #210538

Nene, to už jsme taky zkoušel ...

Martin
Java › Analýza textu
8. 5. 2016   #210533

Teď ještě otázka, na ploše mám textový soubor '.txt', ten se tam pokouším nahrát? Dělám to správně, nebo tam mám nahrát jiný soubor? Dík za odpověď. 

Martin
Java › Analýza textu
8. 5. 2016   #210532
Martin
Java › Analýza textu
7. 5. 2016   #210525

Chlapi nevím jak to děláte, ale chybu mi to též vypisuje jako autorovi viz. obrázek 

Připojen obrázek.

Co s tím? 

Petr
Java › Analýza textu
3. 5. 2016   #210416

Jak si přesně zadal cestu k souboru?

Petr
Java › Analýza textu
3. 5. 2016   #210407

Ta chyba je "Chyba při čtení ze souboru". 

Petr
Java › Analýza textu
3. 5. 2016   #210406

Program by správně měl být je převzatý z ITnetwork, píšou u toho, že bys tam měl zadat libovolný textový soubor .txt, ve kterém je nějaký text na analýzu, ale právě nevím jak ho tam vložit když se mě program na to zeptá, vždy to udělám špatně. Druhá možnost mě napadá, vložit tam ten soubor nějak rovnou do toho programu, ale nevím jak? Nějaký rady? :) 

Petr
Java › Analýza textu
3. 5. 2016   #210396

#2 Matrix17
To dělám, ale právě jakkoliv se snažím napsat tu cestu k souboru, tak mi jí to nechce vzít a vždy to vyhodí chybu. Píšu to tam, takto: C:\Users\Petr\Deskopts\.... a takhle to prostě nejde. Tak se chci zeptat jak na to? Děkuji. 

Java › Sčítačka, rada, kontrola
27. 4. 2016   #210260

Děkuji Kite za radu. 

Java › Floyd-Warshallův algoritmus,…
27. 4. 2016   #210259

Funguje jak má.

Java › Sčítačka, rada, kontrola
25. 4. 2016   #210185

Díky Kite, první příspěvek jsem pochopil, ale ten druhý nechápu co mi tím chceš říct? Nebo co bych měl změnit? 

Martin
Java › Floyd-Warshallův algoritmus,…
25. 4. 2016   #210182

Zdravím,

proč mi nefunguje tento kód? Kód jsem na šel na internetu, chci vidět jak funguje, sám bych ho nevymyslel. Při spuštění to napíše "Enter the number of vertices", tak napíšu '4' a potvrdím tlačítkem 'enter', ale víc to už neudělá? Kde je chyba? Najde se někdo kdo poradí? Moc děkuji za jakoukoliv odpověď. S pozdravem Martin. 

import java.util.Scanner;
 
public class FloydWarshall
{
    private int distancematrix[][];
    private int numberofvertices;
    public static final int INFINITY = 999;
 
    public FloydWarshall(int numberofvertices)
    {
        distancematrix = new int[numberofvertices + 1][numberofvertices + 1];
        this.numberofvertices = numberofvertices;
    }
 
    public void floydwarshall(int adjacencymatrix[][])
    {
        for (int source = 1; source <= numberofvertices; source++)
        {
            for (int destination = 1; destination <= numberofvertices; destination++)
            {
                distancematrix[source][destination] = adjacencymatrix[source][destination];
            }
        }
 
        for (int intermediate = 1; intermediate <= numberofvertices; intermediate++)
        {
            for (int source = 1; source <= numberofvertices; source++)
            {
                for (int destination = 1; destination <= numberofvertices; destination++)
                {
                    if (distancematrix[source][intermediate] + distancematrix[intermediate][destination]
                         < distancematrix[source][destination])
                        distancematrix[source][destination] = distancematrix[source][intermediate] 
                            + distancematrix[intermediate][destination];
                }
            }
        }
 
        for (int source = 1; source <= numberofvertices; source++)
            System.out.print("\t" + source);
 
        System.out.println();
        for (int source = 1; source <= numberofvertices; source++)
        {
            System.out.print(source + "\t");
            for (int destination = 1; destination <= numberofvertices; destination++)
            {
                System.out.print(distancematrix[source][destination] + "\t");
            }
            System.out.println();
        }
    }
 
    public static void main(String... arg)
    {
        int adjacency_matrix[][];
        int numberofvertices;
 
        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the number of vertices");
        numberofvertices = scan.nextInt();
 
        adjacency_matrix = new int[numberofvertices + 1][numberofvertices + 1];
        System.out.println("Enter the Weighted Matrix for the graph");
        for (int source = 1; source <= numberofvertices; source++)
        {
            for (int destination = 1; destination <= numberofvertices; destination++)
            {
                adjacency_matrix[source][destination] = scan.nextInt();
                if (source == destination)
                {
                    adjacency_matrix[source][destination] = 0;
                    continue;
                }
                if (adjacency_matrix[source][destination] == 0)
                {
                    adjacency_matrix[source][destination] = INFINITY;
                }
            }
        }
 
        System.out.println("The Transitive Closure of the Graph");
        FloydWarshall floydwarshall = new FloydWarshall(numberofvertices);
        floydwarshall.floydwarshall(adjacency_matrix);
        scan.close();
    }
}
Java › Sčítačka, rada, kontrola
25. 4. 2016   #210181

Dobrý den,

mohl bych poprosit, koukl by se mi někdo na kód, který sem vytvořil a řekl zda je to správně nebo co mi tam chybí, co bych měl dodělat, popřípadě mi poradit jak na to? Děkuji. Přeji hezký den. 

Zadání: 

Ve třídě Scitacka v projektu scitacka_velkych_cisel implementujte veřejnou statickou metodu, která bude vracet hodnotu výrazu 1 + 1 + 1 +.......+ 1 + 1 + 1. Počet jedniček, které se mají sečíst bude dán parametrem metody, který bude typu BigInteger. Výpočet hodnoty výrazu se provede s využitím instance typu Scitackapostupným sčítáním. Navrhněte testovací metodu pro ověření správnosti implementované metody.

package scitacka;

import java.math.BigInteger;

/**
 * Trida Scitacka predstavuje model scitacky, ktera pouze umi secist dve cela
 * cisla typu BigInteger. Kazda instance teto tridy uchovava dve cela cisla typu
 * BigInteger, ktera se daji menit a je mozne kdykoliv urcit jejich soucet
 * pomoci metody soucet().
 *
 * @version 15.2.2016
 */
public class Scitacka {

    // instancni promenne, ktere uchovavaji dve cisla, ktera se budou scitat
    private BigInteger cislo1;
    private BigInteger cislo2;

    /**
     * Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
     * scitanych cisel na hodnoty dane parametry cislo1 a cislo2.
     *
     * @param cislo1 levy scitanec
     * @param cislo2 pravy scitanec
     */
    public Scitacka(BigInteger cislo1, BigInteger cislo2) {
        this.cislo1 = cislo1;
        this.cislo2 = cislo2;
    }

    /**
     * Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
     * scitanych cisel na nulu.
     */
    public Scitacka() {
        cislo1 = BigInteger.ZERO;
        cislo2 = BigInteger.ZERO;
        //this(BigInteger.ZERO, BigInteger.ZERO);
    }

    /**
     * Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
     * scitanych cisel na hodnotu danou parametrem cislo.
     *
     * @param cislo spolecna hodnota obou scitancu
     */
    public Scitacka(BigInteger cislo) {
        this.cislo1 = cislo;
        this.cislo2 = cislo;
        //this(cislo, cislo);
    }

    /**
     * Vraci hodnotu leveho scitance.
     *
     * @return Metoda vraci hodnotu scitance cislo1 z vyrazu cislo1 + cislo2,
     * ktery se da vyhodnotit pomoci metody soucet().
     */
    public BigInteger getCislo1() {
        return cislo1;
    }

    /**
     * Vraci hodnotu praveho scitance.
     *
     * @return Metoda vraci hodnotu scitance cislo2 z vyrazu cislo1 + cislo2,
     * ktery se da vyhodnotit pomoci metody soucet().
     */
    public BigInteger getCislo2() {
        return cislo2;
    }

    /**
     * Metoda nastavi hodnotu leveho scitance pomoci parametru cislo1.
     *
     * @param cislo1 hodnota typu BigInteger, ktera se pouzije k nastaveni
     * leveho scitance
     */
    public void setCislo1(BigInteger cislo1) {
        this.cislo1 = cislo1;
    }
    
    /**
     * Metoda nastavi hodnotu leveho scitance pomoci parametru cislo1.
     *
     * @param cislo1 hodnota typu BigInteger, ktera se pouzije k nastaveni
     * leveho scitance
     * @param cislo2 hodnota typu BigInteger, ktera se pouzije k nastaveni
     * praveho scitance
     */
    public void setCislo1ACislo2(BigInteger cislo1, BigInteger cislo2) {
        this.cislo1 = cislo1;
        this.cislo2 = cislo2;
//        setCislo1(cislo1);
//        setCislo2(cislo2);
    }

    /**
     * Metoda nastavi hodnotu praveho scitance pomoci parametru cislo2.
     *
     * @param cislo2 hodnota typu BigInteger, ktera se pouzije k nastaveni
     * praveho scitance
     */
    public void setCislo2(BigInteger cislo2) {
        this.cislo2 = cislo2;
    }

    /**
     * Vraci soucet dvou cisel typu BigInteger, ktera jsou ulozena v instanci.
     *
     * @return Vraci hodnotu typu BigInteger, ktera predstavuje soucet obou
     * cisel ulozenych v instanci.
     */
    public BigInteger soucet() {
        return cislo1.add(cislo2);
    }

    /**
     * Vraci znakovou reprezentaci instance, ktera popisuje jeji stav.
     *
     * @return Vraci objekt typu String, ktery obsahuje hodnoty obou scitanych
     * cisel. Priklad: "Scitacka{cislo1 = 23, cislo2 = 123}".
     */
    @Override
    public String toString() {
        return "Scitacka{" + "cislo1=" + cislo1 + ", cislo2=" + cislo2 + '}';
    }

    /**
     * Testovaci metoda, ktera vytvori novou scitacku, kterou inicializuje
     * pomoci parametru levyScitanec a pravyScitenec. Potom vytiskne oba
     * scitance a jejich soucet.
     *
     * @param levyScitanec levy scitanec
     * @param pravyScitanec pravy scitanec
     */
    public static void testScitacka(BigInteger levyScitanec, BigInteger pravyScitanec) {
        Scitacka scitacka = new Scitacka(levyScitanec, pravyScitanec);
        System.out.println(scitacka);
        BigInteger cislo1 = scitacka.getCislo1();
        BigInteger cislo2 = scitacka.getCislo2();
        BigInteger soucet = scitacka.soucet();
        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);
        System.out.println();
    }

    /**
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        testScitacka(BigInteger.ZERO, BigInteger.ZERO);

        testScitacka(new BigInteger("5"), new BigInteger("5"));

        testScitacka(new BigInteger("5"), new BigInteger("10"));

        testScitacka(new BigInteger("111111111111111111"), new BigInteger("222222222222222222222222"));

        testScitacka(new BigInteger("" + Integer.MAX_VALUE), BigInteger.ONE);

        testScitacka(new BigInteger("" + Integer.MAX_VALUE), new BigInteger("" + Integer.MAX_VALUE));
        
        testScitacka(new BigInteger("" + Integer.MIN_VALUE), new BigInteger("" + Integer.MIN_VALUE));
    }

}
Lukáš
Java › Zuul_Bad hra, příkaz 'back'
13. 4. 2016   #209927


Co jsem udělal špatně, že mi teď nechce příkaz 'back' fungovat vůbec? 

package zuul_bad_zeman;

import java.util.Stack;
import zuul_bad_zeman.Parser;
import zuul_bad_zeman.Command;

public class Game {

    private Parser parser;
    private Room currentRoom;
    private Room nextRoom;
    private Room previousRoom;
    Stack<Room> path = new Stack<Room>();

    public Game() {
        createRooms();
        parser = new Parser();
    }

    private void createRooms() {
        Room outside, theater, pub, lab, office, shop, hotel, shopSecondFloor, library, underground, pubRoof;

        outside = new Room("outside", "outside the main entrance of the university");
        theater = new Room("theater", "in a lecture theater");
        pub = new Room("pub", "in the campus pub");
        lab = new Room("lab", "in a computing lab");
        office = new Room("office", "in the computing admin office");
        shop = new Room("shop", "in a shop, we have a good CocaCola");
        hotel = new Room("hotel", "in a hotel, WELCOME!");
        shopSecondFloor = new Room("shopSecondFloor", "in second floor in the shop");
        library = new Room("library", "in library there are awesome books");
        underground = new Room("underground","in the underground campus ground");
        pubRoof = new Room("pubRoof", "in the pub roof");
        
        outside.setExit("north", shop);
        outside.setExit("east", theater);
        outside.setExit("south", lab);
        outside.setExit("west", pub);
        theater.setExit("east", library);
        theater.setExit("west", outside);
        pub.setExit("east", outside);
        pub.setExit("west", hotel);
        lab.setExit("north", outside);
        lab.setExit("east", office);
        office.setExit("west", lab);
        shop.setExit("south", outside);
        shop.setExit("up", shopSecondFloor);
        hotel.setExit("east", pub);
        shopSecondFloor.setExit("down", shop);
        library.setExit("west", theater);
        pub.setExit("up", pubRoof);
        outside.setExit("down", underground);
        underground.setExit("up", outside);
        pubRoof.setExit("down", pub);
        
        currentRoom = outside; //začátek hry
    }

    public void play() {
        printWelcome();
        boolean finished = false;
        while (!finished) {
            Command command = parser.getCommand();

            finished = processCommand(command);
                  
        }
        System.out.println("Thank you for playing! Good bye.");
    }

    private void printWelcome() {
        System.out.println();
        System.out.println("Welcome to the World of Zuul!");
        System.out.println("World of Zuul is a new, incredibly boring adventure game.");
        System.out.println("Type 'help' if you need help.");
        System.out.println(currentRoom.whereYouAre());
    }

    private boolean processCommand(Command command) {
        boolean wantToQuit = false;

        if (command.isUnknown()) {
            System.out.println("I don't know what you mean...");
            System.out.println("Please, be careful.");
            System.out.println(currentRoom.whereYouAre());
            return false;
        }

        String commandWord = command.getCommandWord();
        if (commandWord.equals("help")) {
            printHelp();
        }
        else if (commandWord.equals("go")) {
            goRoom(command);
        }
        else if (commandWord.equals("back")) {
            back(command);
        }
        else if (commandWord.equals("look")) {
            doLook();
        }
        else if (commandWord.equals("quit")) {
            wantToQuit = quit(command);
        }
        return wantToQuit;
    }

    private void printHelp() {
        System.out.println("You are lost. You are alone. You wander");
        System.out.println("around at the university.");
        System.out.println();
        System.out.println("Your command words are:");
        System.out.println("go back look help quit");
        System.out.println(currentRoom.whereYouAre());        
    }

    private void goRoom(Command command) {

        if (!command.hasSecondWord()) {
            System.out.println("Go where?");
            return;
        }

        String direction = command.getSecondWord();
        
        Room nextRoom = currentRoom.getExit(direction);
        
        path.push(currentRoom);
	currentRoom = nextRoom;

        if (nextRoom == null) {
            System.out.println("There is no door!");
            System.out.println("Please, be careful.");
            System.out.println(currentRoom.whereYouAre());
            
        } else {
            previousRoom = currentRoom;
            currentRoom = nextRoom;
            System.out.println(currentRoom.whereYouAre());
        }
    }
    
    private void doLook(){
	   System.out.println(currentRoom.lookYouAre());
	}
    
    private boolean quit(Command command) {
        if (command.hasSecondWord()) {
            System.out.println("Quit what?");
            return false;
        } else {
            return true;
        }
    }
    
    
    private void back(Command command) {
        
        
        if (command.hasSecondWord()) {
            System.out.print("I don't know what you mean...\n");
            System.out.println("Try it again");
            System.out.println(currentRoom.whereYouAre());
            return;
        }
         if (previousRoom == null) {
            System.out.print("Sorry you can't go back\n");
            System.out.println(currentRoom.whereYouAre());
            return;  
        }
        if (!path.empty()) {
           currentRoom = path.pop();
	}
        
         currentRoom = previousRoom;
                System.out.println(currentRoom.whereYouAre());
         
        }
      }
Lukáš
Java › Zuul_Bad hra, příkaz 'back'
13. 4. 2016   #209925

Aha, už nic chápu, ale mám jeden problém nechce mi to vzít ten 'path'? 

Lukáš
Java › Zuul_Bad hra, příkaz 'back'
13. 4. 2016   #209923

#5 q
Omlouvám se, ale prostě furt nevím kam to vložit, aby to fungovalo ať to zkouším jak to zkouším, tak to nejde. Mohl by někdo poradit? Děkuji. 

Lukáš
Java › Zuul_Bad hra, příkaz 'back'
12. 4. 2016   #209907

#2 Naemos
Mělo by to vypadat, nějak takto? 

package zuul_bad_zeman;

import java.util.Stack;
/**
 *
 * @author Martin Zeman
 */
public class Zasobnik {
    private Prvek vrchol;
	
    private class Prvek {
      int klic;
      Prvek dalsi;

      Prvek (int klic, Prvek dalsi) {
        this.klic = klic;
        this.dalsi = dalsi;
      }
    }

    Zasobnik() {
      vrchol = null;
    }

    boolean jePrazdny() { 
      return (vrchol == null);
    }
  
    void push(int klic) {
      vrchol = new Prvek(klic, vrchol);
    }

    int pop() {
      int v = vrchol.klic;
      vrchol = vrchol.dalsi;
      return v;
    }
  }

Vložil jsem to do té hra jako třídu, ale nevím co mám vložit za vrchol, klic, dalsi. Jestli vůbec je to dobře, děkuji za radu.

Lukáš
Java › Zuul_Bad hra, příkaz 'back'
12. 4. 2016   #209906

#2 Naemos čau, asi chápu, jak to myslíš. ale nevím jak to mám zapsat, ze zásobníkem, jsem zatím ještě nepracoval, nemohl bys mi trochu více poradit? 

Lukáš
Java › Zuul_Bad hra, příkaz 'back'
12. 4. 2016   #209895

Dobrý den, 

chtěl bych Vás poprosit, jestli by mi někdo nemohl pomoc vymyslet jak, aby fungovalo stále dokola příkaz 'back'. Pro vysvětlení, hráč se pohybuje světem, vždy začíná v oblasti 'outside' poté může chodit možnými směry (south, north, up, down,....) příkazem 'go' a posouvá se do dalších místností, já jsem do toho vložil příkaz 'back' s tím, že se vrátí do té předchozí místnosti, ale funguje mi to pouze vždy jednou a poté zůstává v té jedné vracené místnosti. Já bych chtěl, aby se vracel cestou, kterou chtěl, třeba až na začátek. Děkuji za odpověď. Doufám, že jste to trochu pochopili.  

package zuul_bad_zeman;

import zuul_bad_zeman.Parser;
import zuul_bad_zeman.Command;

public class Game {

    private Parser parser;
    private Room currentRoom;
    private Room previousRoom;

    public Game() {
        createRooms();
        parser = new Parser();
    }

    private void createRooms() {
        Room outside, theater, pub, lab, office, shop, hotel, shopSecondFloor, library, underground, pubRoof;

        outside = new Room("outside", "outside the main entrance of the university");
        theater = new Room("theater", "in a lecture theater");
        pub = new Room("pub", "in the campus pub");
        lab = new Room("lab", "in a computing lab");
        office = new Room("office", "in the computing admin office");
        shop = new Room("shop", "in a shop, we have a good CocaCola");
        hotel = new Room("hotel", "in a hotel, WELCOME!");
        shopSecondFloor = new Room("shopSecondFloor", "in second floor in the shop");
        library = new Room("library", "in library there are awesome books");
        underground = new Room("underground","in the underground campus ground");
        pubRoof = new Room("pubRoof", "in the pub roof");
        
        outside.setExit("north", shop);
        outside.setExit("east", theater);
        outside.setExit("south", lab);
        outside.setExit("west", pub);
        theater.setExit("east", library);
        theater.setExit("west", outside);
        pub.setExit("east", outside);
        pub.setExit("west", hotel);
        lab.setExit("north", outside);
        lab.setExit("east", office);
        office.setExit("west", lab);
        shop.setExit("south", outside);
        shop.setExit("up", shopSecondFloor);
        hotel.setExit("east", pub);
        shopSecondFloor.setExit("down", shop);
        library.setExit("west", theater);
        pub.setExit("up", pubRoof);
        outside.setExit("down", underground);
        underground.setExit("up", outside);
        pubRoof.setExit("down", pub);
        
        currentRoom = outside; //začátek hry
    }

    public void play() {
        printWelcome();
        boolean finished = false;
        while (!finished) {
            Command command = parser.getCommand();

            finished = processCommand(command);
                  
        }
        System.out.println("Thank you for playing! Good bye.");
    }

    private void printWelcome() {
        System.out.println();
        System.out.println("Welcome to the World of Zuul!");
        System.out.println("World of Zuul is a new, incredibly boring adventure game.");
        System.out.println("Type 'help' if you need help.");
        System.out.println(currentRoom.whereYouAre());
    }

    private boolean processCommand(Command command) {
        boolean wantToQuit = false;

        if (command.isUnknown()) {
            System.out.println("I don't know what you mean...");
            System.out.println("Please, be careful.");
            System.out.println(currentRoom.whereYouAre());
            return false;
        }

        String commandWord = command.getCommandWord();
        if (commandWord.equals("help")) {
            printHelp();
        }
        else if (commandWord.equals("go")) {
            goRoom(command);
        }
        else if (commandWord.equals("back")) {
            back(command);
        }
        else if (commandWord.equals("look")) {
            doLook();
        }
        else if (commandWord.equals("quit")) {
            wantToQuit = quit(command);
        }
        return wantToQuit;
    }

    private void printHelp() {
        System.out.println("You are lost. You are alone. You wander");
        System.out.println("around at the university.");
        System.out.println();
        System.out.println("Your command words are:");
        System.out.println("go back look help quit");
        System.out.println(currentRoom.whereYouAre());        
    }

    private void goRoom(Command command) {

        if (!command.hasSecondWord()) {
            System.out.println("Go where?");
            return;
        }

        String direction = command.getSecondWord();

        Room nextRoom = currentRoom.getExit(direction);

        if (nextRoom == null) {
            System.out.println("There is no door!");
            System.out.println("Please, be careful.");
            System.out.println(currentRoom.whereYouAre());
            
        } else {
            previousRoom = currentRoom;
            currentRoom = nextRoom;
            System.out.println(currentRoom.whereYouAre());
        }
    }
    
    private void doLook(){
	   System.out.println(currentRoom.lookYouAre());
	}
    
    private boolean quit(Command command) {
        if (command.hasSecondWord()) {
            System.out.println("Quit what?");
            return false;
        } else {
            return true;
        }
    }

    private void back(Command command) {
        
        if (command.hasSecondWord()) {
            System.out.print("I don't know what you mean...\n");
            System.out.println("Try it again");
            System.out.println(currentRoom.whereYouAre());
            return;
        }
        
        if (previousRoom == null) {
            System.out.print("Sorry you can't go back\n");
            System.out.println(currentRoom.whereYouAre());
            return;
        }
        currentRoom = previousRoom;

        System.out.println(currentRoom.whereYouAre());
    }
}
Lukáš
Java › Knihovny, jak opravit nebo s…
6. 4. 2016   #209674

Jediné co mi to nabízí tak, že to mohu smazat, ale já to tam potřebuji, jen nevím jak to aktivovat nebo přidat. Nechápu proč to nefunguje. 

Lukáš
Java › Knihovny, jak opravit nebo s…
6. 4. 2016   #209672

Dobrý den, 

prosím podívejte se na obrázek a poraďte mi co s tím? Děkuji.

S pozdravem 

Lukáš

Připojen obrázek.

Lukáš Mrzena
Java › Java úkol - sčítačka
22. 2. 2016   #208826

Dobrý den, 

mohl bych poprosit o radu s tím to úkolem, moc to nechápu, děkuji. 

Úkol: Do třídy Scitacka doplňte deklaraci instanční proměnné soucet, která bude uchovávat součet obou čísel uložených v instanci. Uvědomte si, že hodnota této proměnné je závislá na ostatních instančních proměnných a bude tedy nutné provést vždy její aktualizaci v případě, že dojde ke změně hodnoty některého ze sčítaných čísel. Proveďte potřebné úpravy kódu třídy Scitacka.

Program:

package scitacka;

/**
 * Trida Scitacka predstavuje model scitacky, ktera pouze umi secist dve cela
 * cisla typu int. Kazda instance teto tridy uchovava dve cela cisla typu int,
 * ktera se daji menit a je mozne kdykoliv urcit jejich soucet pomoci zavolani
 * metody soucet().
 *
 * @author Lukáš Mrzena
 * @version 15.2.2016
 */
public class Scitacka {

    // instancni promenne, ktere uchovavaji dve cisla, ktera se budou scitat
    private int cislo1;
    private int cislo2;

    /**
     * Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
     * scitanych cisel na hodnoty dane parametry cislo1 a cislo2.
     *
     * @param cislo1 levy scitanec
     * @param cislo2 pravy scitanec
     */
    public Scitacka(int cislo1, int cislo2) {
        this.cislo1 = cislo1;
        this.cislo2 = cislo2;
    }

    /**
     * Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
     * scitanych cisel na nulu.
     */
    public Scitacka() {
        cislo1 = 0;
        cislo2 = 0;
        //this(0, 0);
    }

    /**
     * Konstruktor pro objekty tridy Scitacka, ktery nastavi hodnoty obou
     * scitanych cisel na hodnotu danou parametrem cislo.
     *
     * @param cislo spolecna hodnota obou scitancu
     */
    public Scitacka(int cislo) {
        this.cislo1 = cislo;
        this.cislo2 = cislo;
        //this(cislo, cislo);
    }

    /**
     * Vraci hodnotu leveho scitance.
     *
     * @return Metoda vraci hodnotu scitance cislo1 z vyrazu cislo1 + cislo2,
     * ktery se da vyhodnotit pomoci metody soucet().
     */
    public int getCislo1() {
        return cislo1;
    }

    /**
     * Vraci hodnotu praveho scitance.
     *
     * @return Metoda vraci hodnotu scitance cislo2 z vyrazu cislo1 + cislo2,
     * ktery se da vyhodnotit pomoci metody soucet().
     */
    public int getCislo2() {
        return cislo2;
    }

    /**
     * Metoda nastavi hodnotu leveho scitance pomoci parametru cislo1.
     *
     * @param cislo1 hodnota typu int, ktera se pouzije k nastaveni leveho
     * scitance
     */
    public void setCislo1(int cislo1) {
        this.cislo1 = cislo1;
    }

    /**
     * Metoda nastavi hodnotu leveho a praveho scitance pomoci parametru cislo1
     * a cislo2.
     *
     * @param cislo1 hodnota typu int, ktera se pouzije k nastaveni leveho
     * scitance
     * @param cislo2 hodnota typu int, ktera se pouzije k nastaveni praveho
     * scitance
     */
    public void setCislo1ACislo2(int cislo1, int cislo2) {
        this.cislo1 = cislo1;
        this.cislo2 = cislo2;
        //setCislo1(cislo1);
        //setCislo2(cislo2);
    }

    /**
     * Metoda nastavi hodnotu praveho scitance pomoci parametru cislo2.
     *
     * @param cislo2 hodnota typu int, ktera se pouzije k nastaveni praveho
     * scitance
     */
    public void setCislo2(int cislo2) {
        this.cislo2 = cislo2;
    }

    /**
     * Vraci soucet dvou cisel typu int, ktera jsou ulozena v instanci.
     *
     * @return Vraci hodnotu typu int, ktera predstavuje soucet obou cisel
     * ulozenych v instanci. V pripade preteceni neni vyhozena zadna vyjimka a
     * metoda vraci chybny vysledek.
     */
    public int soucet() {
        return cislo1 + cislo2;
    }

    /**
     * Vraci soucet dvou cisel typu int, ktera jsou ulozena v instanci.
     *
     * @return Vraci hodnotu typu long, ktera predstavuje soucet obou cisel
     * ulozenych v instanci.
     */
    public long soucetLong() {
        return (long) cislo1 + cislo2;
    }

    /**
     * Vraci soucet dvou cisel typu int, ktera jsou ulozena v instanci.
     *
     * @return Vraci hodnotu typu long, ktera predstavuje soucet obou cisel
     * ulozenych v instanci. Porovnejte s metodou soucetLong().
     */
    public long soucetLong1() {
        return (long) (cislo1 + cislo2);
    }

    /**
     * Vraci znakovou reprezentaci instance, ktera popisuje jeji stav.
     *
     * @return Vraci objekt typu String, ktery obsahuje hodnoty obou scitanych
     * cisel. Priklad: "Scitacka{cislo1 = 23, cislo2 = 123}".
     */
    @Override
    public String toString() {
        return "Scitacka{" + "cislo1 = " + cislo1 + ", cislo2 = " + cislo2 + "}";
    }

    /**
     * Testovaci metoda, ktera vytvori novou scitacku, kterou inicializuje
     * pomoci parametru levyScitanec a pravyScitenec. Potom vytiskne oba
     * scitance a jejich soucet.
     *
     * @param levyScitanec levy scitanec
     * @param pravyScitanec pravy scitanec
     */
    public static void testScitacka(int levyScitanec, int pravyScitanec) {
        Scitacka scitacka = new Scitacka(levyScitanec, pravyScitanec);
        System.out.println(scitacka);
        int cislo1 = scitacka.getCislo1();
        int cislo2 = scitacka.getCislo2();
//        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + scitacka.soucet());
//        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + scitacka.soucetLong());
        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + scitacka.soucetLong1());
        System.out.println();
    }

    /**
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        testScitacka(0, 0);
//        Scitacka scitacka1 = new Scitacka();
//        System.out.println(scitacka);
//        int cislo1 = scitacka1.getCislo1();
//        int cislo2 = scitacka1.getCislo2();
//        int soucet = scitacka1.soucet();
//        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);

        testScitacka(5, 5);
//        Scitacka scitacka2 = new Scitacka(5);
//        System.out.println(scitacka);
//        cislo1 = scitacka2.getCislo1();
//        cislo2 = scitacka2.getCislo2();
//        soucet = scitacka2.soucet();
//        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);

        testScitacka(5, 10);
//        Scitacka scitacka3 = new Scitacka(5, 10);
//        System.out.println(scitacka);
//        cislo1 = scitacka3.getCislo1();
//        cislo2 = scitacka3.getCislo2();
//        soucet = scitacka3.soucet();
//        System.out.println("součet čísel " + cislo1 + " a " + cislo2 + " = " + soucet);

        testScitacka(5, -10);
        testScitacka(Integer.MAX_VALUE, 1);
        testScitacka(Integer.MAX_VALUE, Integer.MAX_VALUE);
        testScitacka(Integer.MIN_VALUE, Integer.MIN_VALUE);
    }
}

Lukáš Stehlík
Java › Program java vysvětlení
7. 2. 2016   #208481

Jo takhle, tak to moc děkuji. :) ! 

Lukáš Stehlík
Java › Program java vysvětlení
7. 2. 2016   #208479

#4 Kit
Mohl bys mi doslova vysvětlit jak funguje tato část programu?

    public static void test (int cislo) {
        int sum= 0;
        for(int delitel=1; delitel < cislo; delitel++) {
            if ((cislo % delitel)==0) {
                sum=sum +delitel;
            }
    }
            if (sum==cislo) {
                seznamcisel.add(cislo);
                System.out.println(cislo+ " je dokonalé číslo");
            }
    }

Lukáš Stehlík
Java › Program java vysvětlení
7. 2. 2016   #208476

#2 Kit
Číslo je dokonalé pokud je rovno součtu všech kladných dělitelů. Mám pravdu? 

Lukáš Stehlík
Java › Program java vysvětlení
7. 2. 2016   #208472

Dobrý den, 

chtěl bych Vás poprosit jestli by někdo nebyl ochoten mi vysvětlit podrobně jak funguje tento program? Děkuji za odpověď. 


package dokcisla;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.util.ArrayList;

class Dokcisla {

    static ArrayList<Integer>seznam=new ArrayList<>();

    public static void main(String[] args) {
        int n = 0; 
        
        for (int i=1; i<n; i++) {     
            test(i);
    }
           zapsaniDoSouboru();
    }
  
    public static void test (int cislo) {
        int sum= 0;
        for(int delitel=1; delitel < cislo; delitel++) {
            if ((cislo % delitel)==0) {
                sum=sum +delitel;
            }
    }
            if (sum==cislo) {
                seznam.add(cislo);
                System.out.println(cislo+ " je dokonalé číslo");
            }
    }
    public static void zapsaniDoSouboru() {
        try (BufferedWriter bw = new BufferedWriter (new FileWriter("vystup.txt"))) {  
            bw.write ("Dokonalá čísla jsou tato: ");
            bw.write (seznam.toString());
            bw.close();
        }
        catch (Exception e) {  
            System.err.println("Do souboru se nepovedlo zapsat");
           
            return;  
        }
    }
}

 

 

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