だから私が持っているのは、飲み物の名前と価格 Test[Name][Price] の 2 次元配列です。
public static final String[][] Test = {{"vodka1","5.0"},{"vodka2","10.0"},{"vodka3","15.0"},{"vodka4","20.0"},{"vodka5","25.0"}};
私がやろうとしているのは、ユーザーが最大価格を入力すると、最大価格を下回る2次元配列から飲み物がランダムに選択されるようにすることです。
まず、ユーザーの最大価格よりも低い飲み物だけに配列を絞り込むにはどうすればよいですか?
これは私が試したものです(私はそれが間違っていることを知っていますが、私が考えることができるすべてです):
private static final String[] test1 = {};
test1 = (array_city.Test[i][j] <= Price);
randomIndex = random.nextInt(test1.length);
text2.setText(test1[randomIndex]);
ありがとう!
編集
価格に応じて配列を最小から最大に並べ替え、このコードを試して、購入可能な最大の飲み物を見つけ、間のランダムインデックスを選択し、その文字列にテキストを設定しましたが、アクティビティページが開始するとクラッシュしますか? これが私のコードです:
convert = Double.valueOf(array_city.Test[c][1]);
// Set vodka brand
while(Price <= convert){
c++;
convert = Double.valueOf(array_city.Test[c][1]);
}
final TextView text2 = (TextView) findViewById(R.id.display2);
randomIndex = random.nextInt(c);
text2.setText(array_city.Test[randomIndex][1]);
これが機能しないのはなぜですか?
最終編集
理解した!!いくつかのマイナーなロジックの問題であることが判明し、4 ループに変更したところ、うまく機能しました!! これが私のコードに対して行ったことです:
convert = Double.valueOf(array_city.Test[c][1]);
// Set vodka brand
for(double i = Price; i >= convert;){
c++;
convert = Double.valueOf(array_city.Test[c][1]);
}
final TextView text2 = (TextView) findViewById(R.id.display2);
randomIndex = random.nextInt(c);