2013-05-31 3 views
-1
public static double convertWeight(String value, String value2) { 
    double lbs = 0; 
    double ounces = 0; 
    if (!value.equals("")) { 
     lbs = Double.parseDouble(value); 
    } 
    if (!value2.equals("")) { 
     ounces = Double.parseDouble(value2) * 0.062500; 
    } 
    double grams = (lbs + ounces)/0.0022046; 
    return grams; 
} 

У меня есть эта часть кода, где иногда я получаю фунты или унцию empty. Вышеупомянутый фрагмент кода работает нормально, но я не доволен тем, как я написал код. Может ли кто-нибудь сказать мне лучший альтернативный способ.Проверка на наличие пустых строк

У меня есть convertWeight. Поэтому из моей службы я иногда получаю значения или иногда просто пустые строки. Если его пустой я убедиться, что я прохожу фунты или унции «Zero» converWeight(value1, value2);

+0

Проверяется длина равна нулю, кажется более понятным для меня. – squiguy

+8

Чтобы узнать, как улучшить код функционирования, вы можете рассмотреть http://codereview.stackexchange.com –

+3

Кстати, 'java.lang.String' имеет метод' isEmpty', который является самым идиоматическим способом проверки того, является ли строка имеет длину 0. – ruakh

ответ

6

В Java 6 реализован новый метод String, isEmpty(). Пока вы работаете 6 или выше, вы можете переписать свой код с помощью этого метода. Это немного читаемо.

try { 
    if (!isEmpty(value)) { 
     lbs = Double.parseDouble(value); 
    } 
    if (!isEmpty(value2)) { 
     ounces = Double.parseDouble(value2) * 0.062500; 
    } 
} catch (NumberFormatException nfe) { 
    //Do some notification 
    System.err.println("Invalid input."); 
} 

В качестве дополнительного предложения .. Вы можете обернуть этот код в блок try/catch. Если вы этого не сделаете, ваша программа выйдет из строя с неперехваченным исключением, если попытается проанализировать что-либо, кроме действительного двойника, для любых значений.

+0

Спасибо, можно изменить код, который я отправил в try/catch, я просто получаю некоторые ошибки здесь, когда я пытаюсь это сделать. – theJava

+0

+1 для копания факта, что '.isEmpty()' был только 1.6+! Ничего себе, я никогда не думал об использовании этого метода вообще ... – fge

+1

Я действительно понятия не имел, что он был реализован в 1.6 либо до того, как я исследовал, чтобы ответить на вопрос. Я тоже кое-что узнал. : D –

1

Я обычно делаю это так

if (value != null && !value.trim().isEmpty()) 
  • Null чеком, чтобы избежать NPE
  • , сопровождаемые trim() раздеть любого посторонние пробелы
  • Далее следуют isEmpty(), который возвращает true для длины> 0
0

использование String.isEmpty метод

public static double convertWeight(String value, String value2) { 
    double lbs = (value.isEmpty())?0:Double.parseDouble(value); 
    double ounces = (value2.isEmpty())?0:Double.parseDouble(value2) * 0.062500; 
    return (lbs + ounces)/0.0022046; 
} 
Смежные вопросы