На этот вопрос уже есть ответы здесь:
java .lang.NumberFormatException: для входной строки: «0,000» [дубликат]
Итак, я получаю эта ошибка при запуске кода блока ниже:
Сообщение об ошибке:
java.lang.NumberFormatException: For input string: "[D@548b7f67"
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at sun.misc.FloatingDecimal.parseDouble(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
at org.cloudbus.cloudsim.power.PowerVmAllocationPolicyMigrationLocalRegression.isHostOverUtilized(PowerVmAllocationPolicyMigrationLocalRegression.java:169)
at org.cloudbus.cloudsim.power.PowerVmAllocationPolicyMigrationAbstract.getOverUtilizedHosts(PowerVmAllocationPolicyMigrationAbstract.java:397)
at org.cloudbus.cloudsim.power.PowerVmAllocationPolicyMigrationAbstract.optimizeAllocation(PowerVmAllocationPolicyMigrationAbstract.java:96)
at org.cloudbus.cloudsim.power.PowerDatacenter.updateCloudletProcessing(PowerDatacenter.java:102)
**My Code:**
@Override
protected boolean isHostOverUtilized(PowerHost host) {
PowerHostUtilizationHistory _host = (PowerHostUtilizationHistory) host;
double[] utilizationHistory = _host.getUtilizationHistory();
double[] ramUtilizationHistory = _host.getRamUtilizationHistory();
double[] bwUtilizationHistory = _host.getBWUtilizationHistory();
final List<double[]> utiLizationList = Arrays.asList(utilizationHistory,
ramUtilizationHistory, bwUtilizationHistory);
double x[][] = new double[utilizationHistory.length][3];
for(int i = 0; i< utilizationHistory.length;i++)
{
for(int j=0; j<utiLizationList.size(); j++){
x[i][j] = utiLizationList.get(j)[i];
//System.out.print(" "+ x[i][j] +"");
}
//System.out.println();
}
double[] y = new double[utilizationHistory.length];
for(int i=0; i<utilizationHistory.length; i++)
{
y[i] =
(double) utilizationHistory[i]/1-(double)
utilizationHistory[i] *
(double) ramUtilizationHistory[i]/1-(double) ramUtilizationHistory[i] *
(double) bwUtilizationHistory[i]/1-(double) bwUtilizationHistory[i] ;
}
for(int i=0; i<utilizationHistory.length; i++)
{
//Log.printLine(" "+ y[i]);
}
int length = 10; // we use 10 to make the regression responsive enough to latest values
if (utilizationHistory.length < length) {
return getFallbackVmAllocationPolicy().isHostOverUtilized(host);
}
double[] utilizationHistoryReversed = new double[length];
for (int i = 0; i < length; i++) {
utilizationHistoryReversed[i] = utilizationHistory[length - i - 1];
}
OLSMultipleLinearRegression regression = null;
try {
regression = getParameterEstimates(x, y);
} catch (IllegalArgumentException e) {
return getFallbackVmAllocationPolicy().isHostOverUtilized(host);
}
double[] estimates = regression.estimateRegressionParameters();
for(int i=0; i<estimates.length; i++)
{
Log.printLine("estimates ______ "+ estimates[i]);
}
// System.exit(0);
// double migrationIntervals = Math.ceil(getMaximumVmMigrationTime(_host) / getSchedulingInterval());
//double predictedUtilization = estimates[0] + estimates[1] * (length + migrationIntervals);
double predictedUtilization = 0;
for(int i=0; i<utilizationHistory.length; i++)
{
predictedUtilization = estimates[0] +
(estimates[1] * utilizationHistory[i]) +
(estimates[2] * ramUtilizationHistory[i])+
(estimates[3] * bwUtilizationHistory[i]);
}
Log.printLine("___________predictedUtilization: " + predictedUtilization);
predictedUtilization *= getSafetyParameter();
addHistoryEntry(host, predictedUtilization);
return predictedUtilization >= 1;
}
Как мне исправить NumberFormatException, когда я запускаю приведенный выше код, я получаю ошибку NumberFormatException. Заранее благодарим за помощь.