質問: scan.next(); } } } } ``` ### 補足情報(FW/ツールのバージョンなど) 今回質問するのが初めてなので何か至らないこと、失礼なこと等ありましたら申し訳ありません。
回答: 質問1 > > Rを押してもEを押してもその後の反応がない > > > 既に回答が付いているとおりString#equalsを使うか、 あるいはObjects.equalsを使って両文字列を比較しなければなりません。 ==を使ってはいけない理由は言語仕様内でも説明されています。**引用元**: Chapter 15. Expressions > > While == may be used to compare references of type String, such an equality test determines whether or not the two operands refer to the same String object. The result is false if the operands are distinct String objects, even if they contain the same sequence of characters (§3.10.5). The contents of two strings s and t can be tested for equality by the method invocation s.equals(t). > > > 以下、私の稚拙な和訳・強引な意訳。 > > String同士の比較に==が使われるかもしれないが、これは比較対象がおなじオブジェクトかどうか判定するものである。もし同じ文字の並びを持つ文字列を比べたとしても、オブジェクトが異なればfalseを返す。文字列sとtの中身が等しいか知りたいならば、s.equals(t)を用いよ。 > > > 質問2 > > Rを押したら本の一覧情報のリストが追加されていくようなものを作っていきたいがこれで合っているのかがわからない。 > > ArrayListの2次元配列を作成することも検討したがこんがらがってしまいわからなくなってしまった。 > > > 本に関するクラスBookを作ると楽です。 そうすれば例えば次のようにコードを組めます。 ``` List books = new ArrayList<>(); while(...) { if(...) { ... books.add( new Book(name, isbn, author, publisher, yearOfIssue) ); ... } } ``` String配列bは不要です。