Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在类中返回所需的值-Java_Java_Return_Return Value - Fatal编程技术网

在类中返回所需的值-Java

在类中返回所需的值-Java,java,return,return-value,Java,Return,Return Value,我对返回所需的值感到困惑。以下是我代码的一部分: public class StrNum { public static int getInt(String input) { String str = new String(input); int result; if (str.startsWith("b")) { str = str.substring(1); resul

我对返回所需的值感到困惑。以下是我代码的一部分:

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);
        }
现在,我需要返回的是结果。当我写
时返回结果,它要求我初始化变量(我知道它还没有初始化)。当我在
if
语句中使用
returnresult
时,Eclipse告诉我必须返回一个值。
我在这里傻到哪里去了?如果
Str
既不是以
“b”开头,也不是以
“x”开头,那么
getInt()
方法将返回什么?这将是一个错误,因为
result
未初始化。您可以通过使用在这种情况下要返回的值初始化
result
来解决此问题:

int result = -1; // for example
编辑:

由于您希望使用
input
来确定数字将被解析为二进制还是十六进制,因此我建议您添加一条else语句来解析以10为基数的数字作为默认值:

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

  • 尝试遵循Java命名约定。变量/方法使用
    someVar
    等名称,类使用
    SomeClass
    等名称
  • 不需要创建新的字符串实例
    Str
    ,除非以后要用相同的方法使用原始输入
  • 要创建具有相同内容的
    字符串
    ,只需执行以下操作

    String str=input


如果
Str
既不是以
“b”开头,也不是以
“x”开头,那么
getInt()方法将返回什么?这将是一个错误,因为
result
未初始化。您可以通过使用在这种情况下要返回的值初始化
result
来解决此问题:

int result = -1; // for example
编辑:

由于您希望使用
input
来确定数字将被解析为二进制还是十六进制,因此我建议您添加一条else语句来解析以10为基数的数字作为默认值:

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

  • 尝试遵循Java命名约定。变量/方法使用
    someVar
    等名称,类使用
    SomeClass
    等名称
  • 不需要创建新的字符串实例
    Str
    ,除非以后要用相同的方法使用原始输入
  • 要创建具有相同内容的
    字符串
    ,只需执行以下操作

    String str=input


您可以从
if
返回结果,也可以从
else
返回结果,前提是您在
else
块之后没有进行其他计算


或者简单地初始化
result=0
,在返回之前,它将以任何方式更改。

您可以从
if
返回结果,也可以从
else
返回结果,前提是您在
else
块之后没有进行其他计算

或者简单地初始化
result=0
,在您返回之前,它将以任何方式更改。

试试看

int结果=0
您必须在返回变量之前初始化变量,或者换句话说,执行结果=。无论应用程序采用何种代码路径,都必须始终初始化变量。

请重试

int结果=0

您必须在返回变量之前初始化变量,或者换句话说,执行结果=。无论应用程序采用何种代码路径,变量必须始终进行初始化。

因此我必须将“result”初始化为不符合条件的值?@user3383621将其初始化为
-1
,如示例所示,通过Christian方法,您可以在未获得所需值时进行测试。换句话说,您可以使用类似于,
if(result==-1)System.out.println(“您搞砸了”)。您必须将结果初始化为某些内容,否则它将不起作用。请记住,
-1
只是一个示例,您可以将其初始化为任何用于检查错误的值。@Christian是的,我也有“else”子句,只是我的帖子中没有包含它。你的解释很好,再次感谢!因此,我必须将“result”初始化为不符合条件的值?@user3383621将其初始化为
-1
,如Christian示例所示,您可以在没有获得所需值时进行测试。换句话说,您可以使用类似于,
if(result==-1)System.out.println(“您搞砸了”)。您必须将结果初始化为某些内容,否则它将不起作用。请记住,
-1
只是一个示例,您可以将其初始化为任何用于检查错误的值。@Christian是的,我也有“else”子句,只是我的帖子中没有包含它。你的解释很好,再次感谢!这部分是正确的。实例和类变量会自动初始化为0或null或等效值。如果我有错误,请更正我,但如果变量具有默认值,并且没有以其他方式定义,则会将其视为已初始化,因为它已设置为其默认值。不确定具有默认值的
变量是什么意思。我假设您指的是:在这些变量的情况下,如果它们是类或实例变量或数组组件,它们将只被初始化,正如规范所说。如果这些变量是局部变量,那么它们不会自动初始化,必须由程序员初始化。否则程序将无法编译。这就是为什么我说你的答案部分正确的原因。我的意思是像布尔型这样的变量类型。你可能是对的。这部分是正确的。实例和类变量自动初始化为0或null或等效值。如果我错了,请更正我,但我