我有一些像这样的代码:
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],但用于访问数组,它不能就是这样吗?否则如何访问阵列?
请帮忙!
谢谢!
答案 0 :(得分:1)
有一些可能的选择:
你正在创建一个新的float数组,你需要一个int大小,map
是否返回一个浮点数?如果是这种情况,map
可能需要进行重大修改。
map
需要什么样的参数? itemPrice [i],dataMin和dataMax都是浮点数(高度也可以),这是正确的吗?在这种情况下,转换为(int)就足够了,或者你的函数原型需要修复......
请将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
}
}