最も近い一致を取得しようとしている値から、配列の列 1 に保持されている値を減算する目的で、配列内の値にアクセスする際に問題があります。double から int に変換できない型の不一致エラーが表示されます
余談ですが、問題に正しい方法で取り組んでいるかどうかは確かです。探している値に最も近い値について列 1 の値をチェックするテーブルがあり、その行の他の列は返す必要がある値です。(AD&D をプレイした場合、AD&D のいくつかのテーブルのように考えてください)
// Column 1 ability score, 2 Damage mod, 3 Lift , 4 carry, 5 drag
double arr [][] = {{1.01,-7,11,9,28},
{1.51,-6,25,12,63},
{2.01,-6,38,14,96},
{2.51,-5,51,14,96},
{3.01,-5,51,17,128}};
public double EXTcha(double cha) {
double closestNo = 0;
double lookingFor = cha;
int reqIndex = 0;
double i;
for (int row=0; row < arr.length; row++) {
System.out.println(row+"row \t");
double currentDiff = (lookingFor-arr[i][0]);
System.out.println(currentDiff+"diff \t");
if (currentDiff < closestNo) {
closestNo = currentDiff;
System.out.println(closestNo+"closest \t");
reqIndex = row;
};
}
for (int column=0; column<arr[reqIndex].length;column++) {
System.out.println(arr[reqIndex][column]+"\t");
}
return extcha;
}
提案された変更を加えた後の他の人のためのコードは次のとおりです
// Column 1 ability score, 2 Damage mod, 3 Lift , 4 carry, 5 drag
double arr [][] = {{1.01,-7,11,9,28},
{1.51,-6,25,12,63},
{2.01,-6,38,14,96},
{2.51,-5,51,14,96},
{3.01,-5,51,17,128}};
public double EXTcha(double cha) {
double closestNo = 50;
double lookingFor = cha;
int reqIndex = 0;
for (int row=0; row < arr.length; row++) {
System.out.println(row+"row \t");
double currentDiff = Math.abs(lookingFor-arr[row][0]);
System.out.println(currentDiff+"diff \t");
if (currentDiff < closestNo){
closestNo = currentDiff;
System.out.println(closestNo+"closest \t");
reqIndex = row;
};
}
for (int column=0; column<arr[reqIndex].length;column++) {
System.out.println(arr[reqIndex][column]+"\t");
}
return extcha;
}
0 に初期化すると別の問題が発生closestNo
しました。これは、それに対してテストしたときに(currentDiff < closestNo)
常により小さいということを意味していたので、50 に設定しました。これは、列 1 に保持されている double 値よりも常に大きくなります。
これが誰かに役立つことを願っています