无法从float转换为int

时间:2015-04-28 14:58:19

标签: java compilation processing

我有一些像这样的代码:

void drawPlot()
{
    String[] dataItemPrices = loadStrings("itemPrices.csv");  //load in .csv file, store as string array
    itemName = new String[dataItemPrices.length-1];
    itemPrice = new float[dataItemPrices.length-1];

    for (int i=0; i<dataItemPrices.length-1; i++) 
    {
        //split array to consider commas
        String[] tokensItemPrices = dataItemPrices[i+1].split(",");   
        itemName[i] = tokensItemPrices[0];
        itemPrice[i] = Float.parseFloat(tokensItemPrices[1]);

        dataMin = min(dataMin,itemPrice[i]); 
        dataMax = max(dataMax,itemPrice[i]); 

        itemPriceScaled = new float[map(itemPrice[i], dataMin, dataMax, 
                                        0, (height-100))];
    }
}

最后一行代码导致问题,当我编译时,我得到&#34;无法从float转换为int&#34;。

唯一的int是[i],但用于访问数组,它不能就是这样吗?否则如何访问阵列?

请帮忙!

谢谢!

1 个答案:

答案 0 :(得分:1)

有一些可能的选择:

  1. 你正在创建一个新的float数组,你需要一个int大小,map是否返回一个浮点数?如果是这种情况,map可能需要进行重大修改。

  2. map需要什么样的参数? itemPrice [i],dataMin和dataMax都是浮点数(高度也可以),这是正确的吗?在这种情况下,转换为(int)就足够了,或者你的函数原型需要修复......

  3. 请将map的代码和所有变量声明添加到您的问题中。

    编辑:

    在你的评论和查看你的代码之后,也许这就是你想要做的事情:使用map填充价格(取自itemPrice数组)“scaled”的数组,其大小明显与其他两个数组:

    void drawPlot()
    {
        String[] dataItemPrices = loadStrings("itemPrices.csv");  //load in .csv file, store as string array
        itemName = new String[dataItemPrices.length-1];
        itemPrice = new float[dataItemPrices.length-1];
        itemPriceScaled = new float[dataItemPrices.length-1]; // <<<<<Added
    
        for (int i=0; i<dataItemPrices.length-1; i++) 
        {
            //split array to consider commas
            String[] tokensItemPrices = dataItemPrices[i+1].split(",");   
            itemName[i] = tokensItemPrices[0];
            itemPrice[i] = Float.parseFloat(tokensItemPrices[1]);
    
            dataMin = min(dataMin,itemPrice[i]); 
            dataMax = max(dataMax,itemPrice[i]); 
    
            itemPriceScaled[i] = map(itemPrice[i], dataMin, dataMax, 
                                            0, (height-100)); //<<<Modified
        }
    }