[リストへもどる]
一括表示
タイトルJavaオブジェクト指向基礎講習の例外処理
記事No6450
投稿日: 2021/09/10(Fri) 07:07
投稿者粕谷
”在庫不足の不具合”の講習内容を少し変えてみました

下記のようにItem3のキー番号順を入れ替えしてみたところ、
キー番号が昇順になっている場合は変更が反映されましたが、
キー番号が降順になっている場合は変更されませんでした。

itemLogic.updateStock("003", -40);
itemLogic.updateStock("002", 50);

これはHashMapの制約なのでしょうか?

以下のドキュメントを読んでみましたが、記載されている箇所がわかりませんでした。
https://docs.oracle.com/javase/jp/8/docs/api/java/util/HashMap.html

お教えいただけると幸いです。

タイトルRe: Javaオブジェクト指向基礎講習の例外処理
記事No6451
投稿日: 2021/09/10(Fri) 10:16
投稿者サーチマン佐藤
いえ、そのような制約はないと思います。
Keyを指定して、Valueが変更できるはずです。

ちなみに、私の環境で試してみました。

itemLogic.updateStock("002", 50);
itemLogic.updateStock("003", -40);

itemLogic.updateStock("003", -40);
itemLogic.updateStock("002", 50);

上記どちらのパターンも、以下の結果になりましたが。
001:001:商品1:1000円:10個
002:002:商品2:2000円:70個
003:003:商品3:3000円:-10個

どんな結果になるのですか?

タイトルRe^2: Javaオブジェクト指向基礎講習の例外処理
記事No6452
投稿日: 2021/09/10(Fri) 19:52
投稿者粕谷
例えば、以下の様にとすると
itemLogic.updateStock("003", -40);
itemLogic.updateStock("002", 50);
itemLogic.updateStock("001", -10);

はじめの003の在庫なしのみ反映されているようです。
002の在庫は70で、001は在庫が0になるのを期待していたのですが。

003は、在庫不足です
キー:商品ID:商品名:価格:在庫
---------------------------------
001 : 001 : 商品1 : 1000 円: 10個
002 : 002 : 商品2 : 2000 円: 20個
003 : 003 : 商品3 : 3000 円: 30個

Logicの書き方などがおかしいのでしょうか。。
もう一度、書き直してみます。

タイトルRe^3: Javaオブジェクト指向基礎講習の例外処理
記事No6453
投稿日: 2021/09/11(Sat) 07:48
投稿者サーチマン佐藤
そうですか。
何か書き間違っている気がいたします。
見直してみてください。

もし、どうしてもだめなら、
私にメールでソースを送ってください。

タイトルRe^3: Javaオブジェクト指向基礎講習の例外処理
記事No6454
投稿日: 2021/09/11(Sat) 08:00
投稿者粕谷
なんとなくですが現象がわかりました.
下記の順だと全ての期待通りに表示されました

itemLogic.updateStock("002", 50);
itemLogic.updateStock("001", -10);
itemLogic.updateStock("003", -40);

003は、在庫不足です
キー:商品ID:商品名:価格:在庫
--------------------------------
001 : 001 : 商品1 : 1000 円: 0個
002 : 002 : 商品2 : 2000 円: 70個
003 : 003 : 商品3 : 3000 円: 30個

Exceptionの発生する部分(ここでは003のケース)が,
全体の処理の先にくると,エラー処理のみが行われ,
その後の処理が行えないと理解できそうなのですが,
そういう理解で正しいでしょうか?

タイトルRe^4: Javaオブジェクト指向基礎講習の例外処理
記事No6455
投稿日: 2021/09/11(Sat) 13:17
投稿者サーチマン佐藤
あっ、エラー処理を作った段階でお試しになっていたのですね。
すみません。

エラー処理を作った後だと、エラー処理が先になりますので、
後続が処理されない。

おっしゃる通りの理解で大丈夫です。

タイトルRe^5: Javaオブジェクト指向基礎講習の例外処理
記事No6456
投稿日: 2021/09/11(Sat) 19:33
投稿者粕谷
始めにどの部分からと記載せず失礼しました.

一連の処理について理解ができました.

ありがとうございました.

タイトルRe^6: Javaオブジェクト指向基礎講習の例外処理
記事No6457
投稿日: 2021/09/11(Sat) 20:42
投稿者サーチマン佐藤
こちらこそ、すみません。
ひとまず、ご理解いただけてよかったです。
適度に、仕様変更してみてくださいませ。