Мне это очень нравится.Единственное, о чем я мог подумать: если вы хотите воспользоваться преимуществами автобокса, вы можете написать первую часть как
public static float HoursToFloat(String tmpHours) throws NumberFormatException {
float result = 0;
tmpHours = tmpHours.trim();
// Try converting to float first
try
{
result = new Float(tmpHours);
}
catch(NumberFormatException nfe)
{
// OK so that didn't work. Did they use a colon?
if(tmpHours.contains(":"))
{
int hours = 0;
int minutes = 0;
int locationOfColon = tmpHours.indexOf(":");
try {
hours = new Integer(tmpHours.substring(0, locationOfColon-1));
minutes = new Integer(tmpHours.substring(locationOfColon+1));
}
catch(NumberFormatException nfe2) {
//need to do something here if they are still formatted wrong.
//perhaps throw the exception to the user to the UI to force the user
//to put in a correct value.
throw nfe2;
}
//add in partial hours (ie minutes if minutes are greater than zero.
if(minutes > 0) {
result = minutes / 60;
}
//now add in the full number of hours.
result += hours;
}
}
return result;
}
Конечно, это не так уж и отличается.Просто позволяет вам установить в качестве объектов, а затем манипулировать как примитивы.В противном случае то, что у вас есть, выглядит довольно хорошо.Я бы использовал скобки в расчете в конце.Я знаю, что мультипликация - это более высокий порядок операций, чем сложение, и любой хороший Java-разработчик должен это знать.Но скобка проясняет читателю / разработчику, который придет позже и который может быть новичком в Java.
Кроме того, вам понадобится еще одна попытка поймать ниже, потому что вы можете также бомбить конвертеры Integer.Поскольку вы вводите строку, вы не можете гарантировать, что пользователь не введет что-то вроде «asinboinseuye: ysousieu».Да, вы можете защитить от этого в пользовательском интерфейсе (до некоторой степени), но вам все же, вероятно, следует включить защиту в метод, как показано выше.Затем, если по какой-либо причине он по-прежнему не является числовым, вы можете выбросить его в пользовательский интерфейс и затем предоставить пользователю сообщение с просьбой ввести число в тех форматах, которые вы считаете приемлемыми.
В противном случае выглядит великолепно.