数组列表中的未知零

时间:2013-05-16 23:14:29

标签: java

请参阅下面的代码,我的代码的最后两行是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));   //////////////////////////////
//          }
//      }
    }

}

2 个答案:

答案 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初始化,而不是正确的项目值。