gpt4 book ai didi

java - 如何关闭 "java: variable might not have been initialized"

转载 作者:搜寻专家 更新时间:2023-11-01 01:20:58 25 4
gpt4 key购买 nike

我有以下代码:

public static void main( String[  ] args ){
int begin, end;
try{
begin = Integer.valueOf( args[ 1 ] );
end = Integer.valueOf( args[ 2 ] );
}catch( NumberFormatException conversion_error ){
System.out.println( "Not A Number." );
System.exit( 1 );
}
if( begin >= end ){
System.out.println( "Wrong arguments. (" + begin + " >= " + end + ")" );
System.exit(1);
}
System.out.print( "OK." );
System.exit(0);
}

当我尝试编译它时,出现此错误。

Error:(13, 13) java: variable begin might not have been initialized Error:(13, 22) java: variable end might not have been initialized

我理解为什么编译器会警告我,但我的代码的真正目的是处理这种情况:当变量未初始化时,我会关闭我的程序。在这种情况下,我从不使用它们。

我认为答案相当简单:在“try” block 之外初始化“begin”和“end”,例如立即为它们分配零。

int begin = 0, end = 0;

但是我可以强制编译器忽略这个问题吗?有什么办法可以关闭对我的代码的这种好奇检查吗?除了我的变量值可能错误之外,我的程序没有任何技术问题。

最佳答案

来自 System.exit 的 javadoc:

Terminates the currently running Java Virtual Machine.

您的编译器不会提前判断 jvm 将关闭,因此程序将退出。

如果您将 System.exit(1); 更改为 return;,编译器将识别此时,您会将控制流返回给调用方法.由于您在程序的 Main 类的 main 方法中,它也会终止程序。直到现在,您的编译器才知道它。

您可以使用以下代码,但请注意,在这种情况下您不会向操作系统发送状态代码 1:

public static void main( String[  ] args ) {

try{
final int begin = Integer.valueOf( args[ 1 ] );
final int end = Integer.valueOf( args[ 2 ] );

if( begin >= end ) {
System.out.println( "Wrong arguments. (" + begin + " >= " + end + ")" );
System.exit(1);
}

} catch( NumberFormatException conversion_error ) {
System.out.println( "Not A Number." );
return;
}

System.out.print( "OK." );
System.exit(0);
}

关于java - 如何关闭 "java: variable might not have been initialized",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31601184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com