Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Laksi nacin za racunanje vise varijabli

[es] :: Java :: Laksi nacin za racunanje vise varijabli

[ Pregleda: 1622 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gojic
Indjija,Srbija

Član broj: 276886
Poruke: 28
*.dynamic.isp.telekom.rs.



Profil

icon Laksi nacin za racunanje vise varijabli02.01.2017. u 14:25 - pre 88 meseci
Pozdrav svima, pokusavam da napravim svoju android aplikaciju.Malu android aplikaciju.
O cemu se radi...dakle aplikacija oponasa meni iz restorana, kad korisnik cekira dorucak, nprm slanina i jaja, unese svoje ime aplikacija ponovi na ekranu te informacije. Ukoliko on zeli da uzme dva razlicita dorucka, aplikacija,naravno,sabere cene i ispise na ekranu.

Code:
 private int calculatePrice(boolean firstBreakfest, boolean secondBreakfest, boolean thirdBreakfest) {
        int price = 0;
       if (firstBreakfest && secondBreakfest){
           price = priceDish1 + priceDish2;
        }
       else if(firstBreakfest){
           price = priceDish1;
       }
       else if(secondBreakfest){
           price = priceDish2;
        }
       else if (thirdBreakfest){
           price = priceDish3;
       }

        return price;
    }

Ali sta ako korisnik hoce da izabere vise razlicitih jela, ne mogu u nedogled da dodajem ifpetlju.Ili,ipak,mogu?
Sve u svemu kod mi izgleda odvratno ovako sa brdo ifpetlji.

Koristim boolean, kada je zeljeni dorucak cekiran on prikazuje cenu i pratecu poruku.

e sad gde sam zapeo...u principu nisam ni zapeo,nego me zanima da li postoji laksi i, na oko lepsi, nacin da izracunam vise varijabli? Moj kod radi sasvim ok ali mi jako ruzno izgleda da imam na desetine if petlja. Probao sam da koristim switch/case ali ne moze sa boolean.E sad ne znam da li moze sa listama nesto da se uradi?

Ovako mi za sada aplikacija izgleda
http://i.imgur.com/6ukHSOQ.png

Kod aplikacije:
JAVA

Code:
public class MainActivity extends AppCompatActivity {
    int quantity = 1;
    public int priceDish1 = 320; //egs and bacon
    public int priceDish2 = 125; //omelet
    public int priceDish3 = 200; //pancakes

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    public void submitOrder(View view) {
        CheckBox checkedBox = (CheckBox) findViewById(R.id.dish1);
        boolean firstBreakfest = checkedBox.isChecked();
        CheckBox checkedBox2 = (CheckBox) findViewById(R.id.dish2);
        boolean secondBreakfest = checkedBox2.isChecked();
        CheckBox checkBox3 = (CheckBox) findViewById(R.id.dish3);
        boolean thirdBreakfest = checkBox3.isChecked();
        EditText editText = (EditText) findViewById(R.id.name_of_user);
        String nameOfUser = editText.getText().toString();
        int price = calculatePrice(firstBreakfest, secondBreakfest,thirdBreakfest);
        String message = orderSummary(price, firstBreakfest, nameOfUser, secondBreakfest);
        displayMessage(message);
    }

    private int calculatePrice(boolean firstBreakfest, boolean secondBreakfest, boolean thirdBreakfest) {
        int price = 0;
       if (firstBreakfest && secondBreakfest){
           price = priceDish1 + priceDish2;
        }
       else if(firstBreakfest){
           price = priceDish1;
       }
       else if(secondBreakfest){
           price = priceDish2;
        }
       else if (thirdBreakfest){
           price = priceDish3;
       }

        return price;
    }

    private String orderSummary(int price, boolean firstBreakfest, String nameOfUser, boolean secondBreakfest) {
        String dish1 = "Beacon and eggs";
        String dish2 = "Omelet";
        String message ="Your name: " + nameOfUser;
        message = message + "\nPrice: " + price + " rsd";
        if(firstBreakfest && secondBreakfest){
            message = message + "\nYour ordered " + dish1 + " and " + dish2;
        }
        else if (firstBreakfest) {
            message = message +  "\nYou ordered " + dish1;
        }
        else if (secondBreakfest) {
            message = message + "\nYou ordered " + dish2;
        }
        return message;
    }


    private void displayMessage(String message) {
        TextView priceTextView = (TextView) findViewById(R.id.order_summary);
        priceTextView.setText(message);
    }

}


Planiram da dodam jos jela, pa mi zato ovo pravi problem.

XML nisam stavio kontam da je nepotreban,ali ako pomaze stavicu kasnije.

Hvala svima.


[Ovu poruku je menjao gojic dana 02.01.2017. u 18:15 GMT+1]
 
Odgovor na temu

Dexxxl




Profil

icon Re: Laksi nacin za racunanje vise varijabli02.01.2017. u 19:38 - pre 88 meseci
A da umesto check boxa stavis spin i korisnik napuca koliko cega zeli?
 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 373



+15 Profil

icon Re: Laksi nacin za racunanje vise varijabli04.01.2017. u 09:44 - pre 88 meseci
nastavi sa cekboxovima - u nekom momentu kada budes smisljao kako ces da omogucis da se jela lako dodaju i da im se menja cena, onda ce ti se ovo samo resiti
 
Odgovor na temu

plague
Software Developer
Auckland, NZ

Član broj: 46734
Poruke: 623
*.vocus.co.nz.



+373 Profil

icon Re: Laksi nacin za racunanje vise varijabli05.01.2017. u 06:44 - pre 87 meseci
Naravno da postoji bolji nacin.

Sa trenutnom postavkom trebalo bi napraviti bar tri klase ItemType, Item i Order.

Code (java):

public class ItemType {
    private String name;

    // constructor
    // get/set for properties
    // override equals and hashCode - Mandatory!  
}

public class Item {
    private String name;
    private ItemType type;
    private double price;
 
    // constructor
    // get/set for properties
    // override equals and hashCode - Mandatory!
}

public class Order {
    private Set<Item> items = new HashSet<>();
   
    public void addItem(Item item) {
        items.add(item);
    }

    public void removeItem(Item item) {
        items.remove(item);
    }

    public double calculateOrderCost() {
        double totalCost = 0;
        for (Item i : items) {
            totalCost += i.getPrice();
        }

        return totalCost;
    }
}
 

Trebalo bi napraviti i neki Servis koji ce ti vratiti dostupne Item-e bilo iz fajla ili konfiguracije.
Ako hoces da izbegnes ponovo kompajliranje/pakovanje aplikacije onda treba napraviti Web Service...
ItemType moze biti enum ako ces raditi iz fajla/konfiguracije.

[Ovu poruku je menjao plague dana 05.01.2017. u 08:00 GMT+1]
 
Odgovor na temu

[es] :: Java :: Laksi nacin za racunanje vise varijabli

[ Pregleda: 1622 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.