私は割り当てとして作業しているプログラムを持っています。要件の一部は、ユーザーから数字を取得して保存する方法を呼び出すよう求めていますそれらをサイズ20
のarray
に変換する。配列に重複する値を入れずにこれを行う必要があります。配列が一杯になるまで、またはユーザーが負の値を入力するまで、ユーザー番号の格納を続けます。私はいくつかの問題を抱えています。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
:重複を無視してキーボードから配列にデータを保存する
Enter the integers for the array: 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 18 18 18 18 19 20
格納する必要があり:
ユーザは、例えば、中断せずに(キーを「入力」を使用して)複数行のテキストを介してデータを入力することができなければなりません重複する値のない配列
20
の一意の数字が入力されていたため、プログラムは他の値を受け付けませんでした。nextInt()
,nextLine()
などのさまざまなオプションを使用しようとしましたが、数字をリストとして保存して変換しても、それほど多くの問題があります。
は、だから私の質問は、どのように私は、ユーザーがキーボードバッファの現在の値が/重複負であるかどうかをチェックするだけでなく、入力の複数行にわたって値を入力することはできないので、私はそれをスキップすることを知ることができますバッファ内の値またはプログラムを終了しますか?
私は自分のコードを含めるつもりですが、正直言って私はこれを何度も繰り返して試してみました。どんな援助も歓迎される以上のものです。
public static int getData(int [] set){
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter the integers for the array.");
System.out.println("The program will stop accepting values when you enter a negative number or reach the 20 unique limit.");
int usrInput=keyboard.nextInt(), arraySizeUsed = 0;
for(int position = 0; position < 20;) {
if(!Arrays.asList(set).contains(usrInput)) {
if(usrInput > -1) {
set[position] = usrInput;
position++;
arraySizeUsed++;
}
else {
return arraySizeUsed;
}
}
else {
continue;
}
}
return arraySizeUsed;
}
は、私はちょうど、キーボードバッファの現在の数は、アレイ内に既に存在する場合にはインクリメントからの位置を維持したいと私はループ内で「続ける」を使用しなければならないとは思いません。私は何が欠けていますか?
なぜ値をHashSetに格納せず、マイナスと20をセンチネルとして使用しますか。 –