请参阅下面的代码,我的代码的最后两行是ArrayList<Float> minList = minsMap.get(minC);
和minList.add(itemElement);
,我正面临问题。在minC
的值为minC = 0
的零的第一行中,在第二行中,零被添加到列表而不是itemElement
的值。在itemElement中我没有零。请帮我弄清楚这段代码有什么问题。
public class absol
{
public static void main(String[] args)
{
float item[] = {7,4,8,5,6,65,45,33,8,6,3,98};
final float[][] arrayTwoD = { {3.5f, 4.55f, 2.1f, 1.40f},
{0.5f, 1.55f, 0.90f, 1.59f},
{4.5f, 5.55f, 3.1f, 2.4f},
{1.5f, 2.55f, 0.10f, 0.60f},
{2.5f, 3.55f, 1.10f, 0.40f},
{61.5f, 62.55f, 60.1f, 59.4f},
{41.5f, 42.55f, 40.1f, 39.4f},
{29.5f, 30.55f, 28.1f, 27.4f},
{4.5f, 5.55f, 3.1f, 2.4f},
{2.5f, 3.55f, 1.10f, 0.40f},
{0.5f, 0.55f, 1.90f, 2.6f},
{94.5f, 95.55f, 93.1f, 92.4f},
};
Map<Integer, ArrayList<Float>> minsMap = new LinkedHashMap<>();
// Initializing Map
for(int i=0; i<arrayTwoD[0].length; i++)
{
ArrayList<Float> minList =new ArrayList<>();
minList.add(0.0f);
minsMap.put(i, minList);
}
for(int row=0; row < arrayTwoD.length; row++)
{
float min = arrayTwoD[row][0];
int minC = 0;
float itemElement =0;
for(int col=0; col < arrayTwoD[row].length; col++)
{
if(arrayTwoD[row][col] < min)
{
min = arrayTwoD[row][col];
itemElement = item[row];
minC = col;
}
}
ArrayList<Float> minList = minsMap.get(minC);
minList.add(itemElement);
}
// for(int i= 0; i< minsMap.size(); i++)
// {
// System.out.print("\n\t Values in List "+i);
// for(int j= 0; j< minsMap.get(i).size(); j++)
// {
// System.out.print("\t"+minsMap.get(i).get(j)); //////////////////////////////
// }
// }
}
}
答案 0 :(得分:2)
我不确定你想要达到的目标,但是你得到比预期更多的零的原因是这个条件:
if (arrayTwoD[row][col] < min) {...}
如果第一项(float min = arrayTwoD[row][0];
)是min,那么if块就不会被执行而你已经初始化了float itemElement = 0;
...
答案 1 :(得分:0)
替换
float itemElement =0;
与
float itemElement = item[minC];
您正在使用0初始化,而不是正确的项目值。