以下に示すように、複数のInteger
オブジェクトを作成してそれらを に配置するクラスがあります。LinkedList
public class Shares<E> implements Queue<E> {
protected LinkedList<E> L;
public Shares() {
L = new LinkedList<E>();
}
public boolean add(E price) {
System.out.println("How many of these shares would you like?");
Scanner scanInt;
scanInt = new Scanner(System.in);
Integer noShares = scanInt.nextInt();
for (int i = 0; i < noShares; i++) {
L.addLast(price);
}
scanInt.close();
return true;
}
}
コンソールからの入力「追加」をスキャンし、見つかった場合は、add
以下に示すようにメソッドを呼び出すアプリケーションがあります。
public class Application {
private static Scanner scan;
public static <E> void main(String[] args) {
Queue<Integer> S = new Shares<Integer>();
scan = new Scanner(System.in);
System.out.println("Please type add");
String sentence = scan.nextLine();
while (sentence.equals("quit") == false) {
if (sentence.equals("add")) {
System.out
.println("What price would you like to buy your shares at?");
S.add((Integer) scan.nextInt());
} else
System.exit(0);
sentence = scan.nextLine();
}
}
}
アプリケーションでは、ユーザーが何度でも「追加」を入力できるようにする必要がありますが、add
メソッドが呼び出された後に「行が見つかりません」というエラーが表示されます。
これはScanner
、メソッド内の が閉じられておらず、必要に応じて再度開かれたためだと推測しています。これはプログラムの問題ですか? もしそうなら、どうすれば修正できますか?
これらの株式を売却する売却方法を追加する予定であるため、このプログラムは終了していません。そのため、while ループを使用しています。