Začátečník bojuje s prvním programem – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Začátečník bojuje s prvním programem – Java – Fórum – Programujte.comZačátečník bojuje s prvním programem – Java – Fórum – Programujte.com

 

Petan
~ Anonymní uživatel
8 příspěvků
27. 9. 2012   #1
-
0
-

Ahoj, na úvod říkám, že jsem začátečník, a proto vám muj dotaz bude připadat stupidní. Nicméně můj problém:

Našel jsem si toto zadání:

Vytvořte třídu Bus, která bude představovat autobus. Autobus si bude pamatovat svoji kapacitu (tj. maximální počet přepravovaných osob), aktuální počet přepravovaných pasažérů (iniciálně 0, tj. autobus je prázdný), a na které lince jezdí.

Do třídy Bus přidejte následující metody:
        Bus(Line line, int capacity): Konstruktor, který vytvoří autobus dané linky a s danou kapacitou.
        boolean getOn(): Metoda pro nástup jednoho pasažéra do autobusu. Pokud je již autobus obsazen, metoda  selže a vrátí false. Jinak inkrementuje čítač pasažérů a vrátí true.
        boolean getOff(): Metoda pro vystoupení jednoho pasažéra z autobusu. Metoda selže a vrátí false pokud je  autobus prázdný.
        String toString(): Metoda vrátí textový řetězec popisující stav autobusu ve formátu:

        "Bus no. <cislo_linky>  is carrying <pocet_pasazeru> passengers."

        kde cislo_linky je číslo linky a pocet_pasazeru je aktuální počet pasažérů.

Vytvořte třídu Demo s metodou main spustitelnou z příkazového řádku s následujícím obsahem:
        Vytvoří linku č. 41 s koncovými zastávkami "Vranov" a "Semilaso".
        Vytvoří linku č. 50 s koncovými zastávkami "Komarov" a "ZOO".
        Vytvoří 3 autobusy. První pro linku 41 s kapacitou 22 osob, druhý pro linku 50 s kapacitou 5 osob a třetí opět pro linku 50 s kapacitou 22 osob.
        Do prvního autobusu nastoupí jeden pasažér a následně vystoupí dva pasažéři (zdánlivá nelogičnost je zde kvůli otestování vašeho kódu).
        Do druhého autobusu nastoupí 6 pasažérů. Toto bude naprogramováno pomocí for cyklu!
        Do třetího autobusu nastoupí 2 pasažéři.
        Na std. výstup se vypíše stav všech tří autobusů (viz metoda toString(). Při správném řešení by se měl na výstupu objevit následující text:

        Bus no. 41 is carrying 0 passengers.
        Bus no. 50 is carrying 5 passengers.
        Bus no. 50 is carrying 2 passengers.

-------------------------------------------------------------------------------------------------------------------------

Byla tam preddefinovana trida Line:

public class Line
{
    private int number;
    private String endStation1;
    private String endStation2;

    /**
     * Constructor.
     * @param num line number
     * @param station1 first end station of the line
     * @param station2 second end station of the line
     */
    public Line(int num, String station1, String station2) {
        number = num;
        endStation1 = station1;
        endStation2 = station2;
    }
   
    /**
     * @return line number
     */
    public int getLineNumber() {
        return number;
    }
   
    /**
     * @return first end station of the bus line
     */
    public String getFirstEndStation() {
        return endStation1;
    }

    /**
     * @return second end station of the bus line
     */
    public String getSecondEndStation() {
        return endStation2;
    }
}

---------------------------------------------------------------------------------------------

Moje třída Bus:

public class Bus
{
   private int capacity;
   private int actualCap=0;
   private Line line;
   //private int lineNum;
   public Bus(Line line, int capacity){
       this.line=line;
       this.capacity=capacity;
      
    }
   
    public boolean getOn(){
        if(actualCap==capacity){
            return false;
        }else{
            actualCap++;
            return true;
        }
    }
   
    public boolean getOff(){
        if(actualCap==0){
            return false;
        }else{
            actualCap--;
            return true;
        }
       
    }
   
    public String toString(){
         return "Ahoj";//"Bus no. "+line+" is carrying "+actualCap+" passengers.";
    }
  
}

------------------------------------------------------------------------------------------

A moje třída Demo:

public class Demo
{
   public static void main(String[] args){
       Line lin1 = new Line(41,"Vranov","Semilaso");
       Line lin2 = new Line(50,"Komarov","ZOO");
       Bus bus1 = new Bus(lin1,22);
       Bus bus2 = new Bus(lin2,5);
       Bus bus3 = new Bus(lin2,22);
       bus1.getOn();
       bus1.getOff();
       bus1.getOff();
       for(int i=0;i<=5;i++){
           bus2.getOn();
        }
        bus3.getOn();
        bus3.getOn();
        bus1.toString();
        bus2.toString();
        bus3.toString();
       
      
    }
}

Kdyz spustím metodu main, nic se neděje. Můžete mě prosím někdo navézt na správné řešení. Ikdyž jsem si obecné definice tříd, metod, atd. četl, není nad praktickým vysvětlením, abych se případné chybě znova vyhnul. Používám na naučení BlueJ. Děkuji

Nahlásit jako SPAM
IP: 85.135.10.–
Petan
~ Anonymní uživatel
8 příspěvků
27. 9. 2012   #2
-
0
-

EDIT:public String toString(){
         return "Ahoj";//"Bus no. "+line+" is carrying "+actualCap+" passengers.";
    }

tady je samozřejmě jenom: return "Bus no. "+line+" is carrying "+actualCap+" passengers.";

Omlouvám se

Nahlásit jako SPAM
IP: 85.135.10.–
pistolnik0
Newbie
27. 9. 2012   #3
-
0
-

#2 Petan
Problém je podle mě v tom, že ten text vlastně nikam nevypisuješ. Jen si přes

 bus1.toString();

necháš vrátít řetězec a dále s ním nepracuješ. Pro výpis zkus použít něco jako:

System.out.println(bus1.ToString());

Nevím jestli je problém jen v tom a zbytek kódu je ok, teď tady momentálně nemám NetBeans abych to zkusil (kód jsem proletěl očima).

Nahlásit jako SPAM
IP: 2001:718:1e02:9120:4da0:f...–
Petan
~ Anonymní uživatel
8 příspěvků
27. 9. 2012   #4
-
0
-

Máš pravdu, díky!

Nahlásit jako SPAM
IP: 85.135.10.–
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, 42 hostů

Moderátoři diskuze

 

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