ループ中に 2D 配列に 2 つの要素を追加するにはどうすればよいでしょうか。
for(...){
gradeArray[i][i] (gradeArray[95][5] <---- i = 0, gets the zero term for the grade and frequency
gradeArray[i][i] (gradeArray[96][2] <-----i = 1; gets the first term for the grade and frequency
ループ中に 2D 配列に 2 つの要素を追加するにはどうすればよいでしょうか。
for(...){
gradeArray[i][i] (gradeArray[95][5] <---- i = 0, gets the zero term for the grade and frequency
gradeArray[i][i] (gradeArray[96][2] <-----i = 1; gets the first term for the grade and frequency
各グレードの発生回数を知りたいようです。あなたの最善の策は HashMap になると思います:
Map<Integer, Integer> frequencyTable = new HashMap<Integer, Integer>();
for (Integer grade : gradeArray) {
if (!frequencyTable.containsKey(grade)) {
frequencyTable.put(grade, Collections.frequency(gradeArray, grade));
}
}
あなたの新しい編集はまだ私を混乱させますが、これがあなたが尋ねていると私が考えることができるすべてです:
int[][] gradesAndFrequencies = new int[gradeCount][2];
for (int i = minGrade; i < maxGrade; i++) {
int grade = ?;
int frequency = ?;
gradesAndFrequencies[i][0] = grade;
gradesAndFrequencies[i][1] = frequency;
}
これは、合計でいくつのグレードがあるか、各グレードとその頻度を見つける方法を知っていることを前提としています。
Ted Hopp の回答に対する以前のコメントを引き続き支持します。何をしようとしているのかについての追加情報がなければ、これは実際にはデータの良いモデルではないと言わざるを得ません。
あなたはそれを気に入らないでしょうが、これがその方法です。したがって、配列は不変です。したがって、この問題を回避するには、変更可能な ArrayList を使用します。しかし、あなたの質問に答えるには(寸法が95x95であると仮定して):
int newGradeArray[][] = new int[96][96]; //creating a new array that has an extra column and row, for more space.
for(int i = 0; i < 95; i++)//a set of nested loops taking everything from the old array, and moving it to this new one.
for(int j = 0; j < 95; j++)
newGradeArray[i][j] = gradeArray[i][j]
//now to add the elements (in the new element or column, your choice)
newGradeArray[95][95] = 95; //assigns the very edge of the new array a value of 95
または、ArrayList を使用できます。この方法では、新しい配列を作成して再割り当てする必要はありません。次のようなことができます。
ArrayList<Integer> a = new ArrayList<Integer>(); //note: ArrayLists can only have classes, not primitive types. Luckily, Integer and I think Character are classes too!
a.add(95, new Integer(95)); //sets the index of 95 as an Integer: 95.
そして、これらは 2 次元にすることができます。または:
ArrayList<int[]> i = new ArrayList<int[]>();
または: ArrayList> l = new ArrayList>(); お望みならば :)
これが役に立ったことを願っています!
成績用と頻度用の 2 つのリストを使用するだけです。
使用する:
List<Integer> grades = new ArrayList<Integer>();
List<Integer> freq = new ArrayList<Integer>();
grades.add(grade);
freq.add(frequency);
それらに追加する
それはずっと簡単です。
例:
while(1 == 1) //infinite loop
{
grade = -1
frequency = -1
grade = inputGrade.nextInt();
frequency = inputFrequency.nextInt();
if(grade != -1 && frequency != -1)
{
grades.add(grade);
freq.add(frequency);
}
else
{
//if using a command window
System.out.println("Missing either frequency or grade, values not stored");
//if not using a command window
JOptionPane.showMessageDialog(null, "Missing either frequency or grade, values not stored");
}
}