私は、Arrayという名前のオブジェクトを保持するためにArrayListを使ってカタログを構築しています。オブジェクトからの文字列がArrayListの同じオブジェクトの文字列と等しくない
私はカタログクラスのメソッドの1つに問題があります。このメソッドは、カタログを実行し、一致するID(文字列値)を持つブートオブジェクトを検索することになっています。
カタログはこれらのオブジェクトで満たされています。このように:
Boot boot1 = new Boot("Extreme Hiking Boot", "A123456", "For extreme terrains", "Khaki", "Canvas", "For all terrains", 65.50, 100, 5);
Boot boot2 = new Boot("Casual Hiker", "B123456", "A hiking boot for the casual person", "Brown", "Leather", "Rocky", 55.95, 200, 3);
Boot boot3 = new Boot("Broken Boot", "Y123456","A broken boot", "Yellow", "Plastic", "Soft Ground", 110.45, 400, 1);
ここでの問題を引き起こしている方法です。
public double getPriceForProduct(String ID){
double price = -1.0;
for(Boot b : catalogue){
if(b.getID().equals(ID)){
price = b.getPrice();
}
else{
System.out.println("We don't have a boot with that ID in stock.");
System.out.println(b.getID()+"\n\n");
}
}
return price;
}
それは私のコンソールにこれを返します。
We don't have a boot with that ID in stock.
B123456
We don't have a boot with that ID in stock.
Y123456
We don't have a boot with that ID in stock.
A123456
We don't have a boot with that ID in stock.
Y123456
私はループセットに対して同じ高度を使用する方法を持っていますダブルスを比較する際にうまくいく別の方法では、
なぜこの高度なループが機能しないのか混乱しています。それが動作するかもしれないように変更。..その場合か、他のいずれかの実行IDごとに
public double getPriceForProduct(String ID){
double price = -1.0;
boolean flag=true;
for(Boot b : catalogue){
if(b.getID().equals(ID)){
price = b.getPrice();
flag=false;
break;
}}
if(flag==true){
System.out.println("We don't have a boot with that ID in stock.");
System.out.println(ID+"\n\n"); }
return price;
}
// !!:
「ID」の値は何ですか? – UnholySheep
あなたはループを通過し、ループ内のすべての要素に対してif/elseを実行します。したがって、A123456を渡すと、価格が設定されますが、他の2つを見つけることはできません...すべてのインスタンスを見た後にしか見つからなかったものを印刷する必要があります – okaram
何が問題なのですか?より具体的にする必要があります。 –