Возврат нужного значения в классе - Java

1

Я смущен возвращением нужной ценности. Вот часть моего кода:

public class StrNum {

    public static int getInt(String input) {        
        String str = new String(input);
        int result;

        if (str.startsWith("b")) {
            str = str.substring(1);
            result = Integer.parseInt(str, 2);
        }
        else if (str.startsWith("x")) {
            str = str.substring(1);
            result = Integer.parseInt(str, 16);
        }

Теперь мне нужно вернуть результат. Когда я пишу return result; , он просит меня инициализировать переменную (и я знаю, что она не была инициализирована). Когда я использую return result внутри операторов if, Eclipse сообщает мне, что мне нужно вернуть значение. Где я здесь глуп? Я был бы признателен за хорошее объяснение.

Теги:
return-value
return

3 ответа

5
Лучший ответ

Каким будет метод getInt() если Str не начинается ни с "b" ни с "x"? Это будет ошибкой, потому что result не инициализируется. Вы могли бы решить эту проблему путем инициализации result со значением, которое вы хотели бы вернуть в этом случае:

int result = -1; // for example

Редактировать:

Поскольку вы хотите использовать input чтобы определить, будет ли номер обрабатываться как двоичный или шестнадцатеричный, я бы рекомендовал вам добавить инструкцию else для разбора числа в базе 10 по умолчанию:

if (...)
   // ...
else if (...)
   // ...
else
   result = Integer.parseInt(Str);

Заметка:

  • Попробуйте следовать соглашениям об именах Java. Используйте имена типа someVar для переменных/методов и используйте имена, например SomeClass для классов.
  • Нет необходимости создавать новый строковый экземпляр Str, если вы не собираетесь использовать исходный ввод позже в том же методе.
  • Чтобы создать String с тем же содержимым, вы можете просто сделать

    String str = input;

  • 0
    Таким образом, я должен инициализировать «результат» в значение, которое не соответствует условиям?
  • 2
    @ user3383621 Инициализация его значением -1 как в примере с Christian, означает, что вы можете проверить, когда вы не получите желаемые значения. Другими словами, вы можете использовать что-то вроде: if (result == -1) System.out.println("You screwed up."); , Вы должны инициализировать результат чем-то, иначе он не будет работать. Имейте в виду, что -1 только пример, вы можете инициализировать его любым значением, которое вы хотели бы использовать для проверки на наличие ошибок.
Показать ещё 2 комментария
1

Вы можете либо вернуть результат из if а также из else, если вы не выполняете дополнительные вычисления после блока else.

или просто инициализировать result = 0, он будет меняться так или иначе, прежде чем вы вернетесь.

1

Пытаться

int result = 0; Вы должны инициализировать переменные перед их возвратом или другими словами do result =. Переменная всегда должна быть инициализирована независимо от того, какой путь кода использует ваше приложение.

  • 0
    Это частично правильно. Переменные экземпляра и класса автоматически инициализируются равными 0 или нулю или эквивалентному.
  • 0
    Пожалуйста, исправьте меня, если я ошибаюсь, но если переменная имеет значение по умолчанию и она не определена иначе, она будет считаться инициализированной, поскольку для нее установлено значение по умолчанию.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню