Я смущен возвращением нужной ценности. Вот часть моего кода:
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 сообщает мне, что мне нужно вернуть значение. Где я здесь глуп? Я был бы признателен за хорошее объяснение.
Каким будет метод getInt()
если Str
не начинается ни с "b"
ни с "x"
? Это будет ошибкой, потому что result
не инициализируется. Вы могли бы решить эту проблему путем инициализации result
со значением, которое вы хотели бы вернуть в этом случае:
int result = -1; // for example
Редактировать:
Поскольку вы хотите использовать input
чтобы определить, будет ли номер обрабатываться как двоичный или шестнадцатеричный, я бы рекомендовал вам добавить инструкцию else для разбора числа в базе 10 по умолчанию:
if (...)
// ...
else if (...)
// ...
else
result = Integer.parseInt(Str);
Заметка:
someVar
для переменных/методов и используйте имена, например SomeClass
для классов.Str
, если вы не собираетесь использовать исходный ввод позже в том же методе. Чтобы создать String
с тем же содержимым, вы можете просто сделать
String str = input;
Вы можете либо вернуть результат из if
а также из else
, если вы не выполняете дополнительные вычисления после блока else
.
или просто инициализировать result = 0
, он будет меняться так или иначе, прежде чем вы вернетесь.
Пытаться
int result = 0;
Вы должны инициализировать переменные перед их возвратом или другими словами do result =. Переменная всегда должна быть инициализирована независимо от того, какой путь кода использует ваше приложение.
-1
как в примере с Christian, означает, что вы можете проверить, когда вы не получите желаемые значения. Другими словами, вы можете использовать что-то вроде:if (result == -1) System.out.println("You screwed up.");
, Вы должны инициализировать результат чем-то, иначе он не будет работать. Имейте в виду, что-1
только пример, вы можете инициализировать его любым значением, которое вы хотели бы использовать для проверки на наличие ошибок.