0

だから私はさまざまなウォッカでいっぱいの文字列配列を持っています、私がしたいのは私が画面にウォッカとその価格を表示できるように配列内の各ウォッカ(文字列)に価格を付けることです、私もこれを使いたいですユーザーの入力に応じて、より高い価格またはより低い価格のウォッカを除外します。配列の例を次に示します。

    public static final String[] Vodka = {"Absolut Vodka","Finlandia","Ketel One","Polmos Krakow","Skyy","Smirnoff Vodka",
    "Stolichnaya","Fleischmann's","Gilbey's","Wolfschmitt","Five-O-Clock", "Grey Goose",};

みなさん、よろしくお願いします!

=================================

これが私が試していたコードのビットですマイクに感謝します!

if(Price != 0){ 
    for (com.famousmods.what.should.i.drink.VodkaList.Vodka vodka : vl.vodkaList){ 
        // Set vodka brand final 
        TextView text21 = (TextView) findViewById(R.id.display2); 
        test = random.next(vodka.getPrice() <= Price); 
        text21.setText(test); 
    } 
}

価格は、ユーザーが入力する最大金額であり、2倍になります。そのコードで私がやろうとしていたことは、入力された価格よりも安い飲み物をランダムに取得することでした。(本当に暗闇の中でのショットでした)

4

4 に答える 4

3

名前と価格の2つのフィールドを持つカスタムクラス「ウォッカ」を作成するだけです。次に、「Vodka」クラスをカプセル化し、これを含む「VodkaList」クラスを作成しますArrayList<Vodka> 。これにより、すべてが適切に整理されます。

したがって、たとえば:

import java.util.ArrayList;

public class VodkaList {

    public class Vodka {

        String name;
        double price; 

        public Vodka(String name, double price) {
            this.name = name;
            this.price = price;
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public double getPrice() {
            return this.price;
        }

        public void setPrice(double price) {
            this.price = price;
        }


    }

    public ArrayList<Vodka> vodkaList;

    public VodkaList() {
        this.vodkaList = new ArrayList<Vodka>();

        // here's where you can hard-code the list of Vodkas
        vodkaList.add(new Vodka("Absolut Vodka", 15.75));
        vodkaList.add(new Vodka("Findlandia", 10.25));
        // and repeat until you've hard-coded them all
    }


}

カスタムクラスを使用することで、ウォッカの名前/価格をいつでも変更できます。配列インデックスを追跡する必要はなく、リストで必要な名前/価格を簡単に検索できます。

VodkaListを初期化するためにメインアクティビティに入れるものは次のとおりです。

VodkaList vl = new VodkaList();

リストをループして、どのウォッカを入れたかを確認したいですか?

for (Vodka vodka : vl.vodkaList)
    Log.i("Vodka", "Name = " + vodka.name + ", Price = " + vodka.price);

サンプルシナリオを調べてみましょう(問題ステートメントの問題に対処するため)。ユーザーが支払う最高価格で「10」を入力したとします。

for (Vodka vodka : vl.vodkaList) {
    if (vodka.getPrice() < 10)
        ; // the price is good! the user wants it.  show them it
    else
        ; // too expensive for the user.. don't show it
}

このクラスは、この種の活動を簡単にします!

それがうまくいくかどうか教えてください。そうでない場合は、さらに提案します。

編集:

    Random random = new Random();
    boolean available = false;

    for (Vodka v : vodkaList) {
        if (v.price <= Price)
            available = true;
    }

    TextView text21 = (TextView) findViewById(R.id.display2);

    if (available) {
        // There exists at least one Vodka lower than the user's price
        int randomIndex = -1;
        while (true) {
            randomIndex = random.nextInt(vodkaList.size());
            Vodka v = vodkaList.get(randomIndex);
            if (v.price <= Price) {
                // We have a match!  Display it to the user
                text21.setText(v.name);
                break;
            }
            // If we got here, there's no match.. loop again!

        }
    } else {
        // No vodka exists unders the users price! Can't display anything
    }
于 2012-08-29T17:28:08.163 に答える
2

代わりに2次元配列を使用する必要があります。

public static final String[][] drinks= { 
          {"Absolut Vodka", "10.0"}, {"Finlandia", "15.0"}
          {"Ketel One", "10.0"}, {"Stolichnaya", "15.0"}

}
于 2012-08-29T17:28:33.777 に答える
2
public class Vodka
{
  private String name;
  private int price;

  public Vodka() {
    super();
    // TODO Auto-generated constructor stub
   }
   public void setName(String name)
   {
     this.name=name;
   }
   public void setPrice(int price)
   {
    this.price=price;
   }

   public String getName()
   {
    return this.name;
   }
   public int getPrice()
   {
    return this.price;
   }

}

あなたの活動では、

List<Vodka> myList = new ArrayList<Vodka> ();
      Vodka vodk = new Vodka();
      vodk.setName("Smirnoff");
      vodk.setPrice(10);

      myList.add(vodk);

データを取得するには:

String name = myList.get(0).getName();
 int price = myList.get(0).getPrice();
于 2012-08-29T17:31:43.790 に答える
0

いくつかのOOPの概念を使用すると、Collectionsクラスも大いに役立ちます。

package com.mac.demo;

import java.util.Map.Entry;
import java.util.SortedMap;
import java.util.TreeMap;

public class SortBean {
public String name;
public double price;

SortBean(String name, Double price) {
    this.name = name;
    this.price = price;
}

public static void main(String[] args) {

    SortBean sb1 = new SortBean("Absolut Vodka", 20.0);
    SortBean sb2 = new SortBean("Finlandia", 30.0);
    SortBean sb3 = new SortBean("Ketel One", 80.0);

    SortedMap<Double, SortBean> sMap = new TreeMap<Double, SortBean>();
     // IF YOU WANT TO SORT IN REVERSE ORDER 
    //SortedMap<Double, SortBean> sMap = new TreeMap<Double, SortBean>(Collections.reverseOrder());

    sMap.put(sb1.price, sb1);
    sMap.put(sb2.price, sb2);
    sMap.put(sb3.price, sb3);

    for (Entry<Double, SortBean> obj : sMap.entrySet()) {
        System.out.println(obj.getKey());
    }

    }
}

出力:

20.0
30.0
80.0
于 2012-08-29T17:29:12.517 に答える