もちろん、メモリ効率を気にしない場合(コーディング中は常にそうする必要があります!)、次のような新しい配列を作成できます。
int[] grades = new int[101];
次に、ユーザーが入力を入力するたびに、次のような操作を実行できます。
int grade = input.nextInt();
grades[grade] = grades[grade] + 1;
次のようなものを実行することで、Aに等しいグレードの数を把握できます。
int A = 0;
for (int i = 91; i < 101; i++){
A += grades[i];
}
それは、ifまたはswitchステートメントの使用が許可されていないとあなたが言ったときに私が考えたものです。それが役に立ったかどうか教えてください。繰り返しますが、ひどく非効率的ですが、少なくともあなたはあなたが持っているすべてのスコアを追跡します。それはプラスです。
これはO(n)の大まかな実行時間になるはずですが、もっと良いと思います。
幸運を!
編集:整数除算の概念を使用することにより、上記の方法のより効率的なバージョンを実行できます。あなたが尋ねるかもしれない整数除算は何ですか、それは2つの整数を除算するときです、例えば10/3そして答えは3.333かもしれませんが、javaは答えが3になるように小数部分を破棄します。したがって、10で割ると、結果は、どのスコアがAであるかなどを取得します。例:92/10 = 9、97 / 10 = 9、83 / 10 = 8など。注意点は、Aのスコアが91〜100であるため、この概念を適用する前に1を引く必要があることです。
これにより、配列は101要素から10要素に減少するはずです。これは、10桁の数字のみを追跡しているためです。これは、とにかくより重要です。これをさらに最適化できるかもしれませんが、これも私の宿題ではないので、あまり時間をかけたくありません。目が覚めたときにこれを考えました:)。
これがあなたに思考の糧を与えてくれることを願っています!