为何Java代码中int变量i需初始化数值才能使循环正常运行?
为什么代码中的int变量i必须设置初始值?
先看问题中的代码实现:
int even = 0; int i = 1; while (i > 0){ i = stdin.nextInt(); if ((i % 2)==0 && (i > 0)){ even += i; } } System.out.print(even);
这是Java语言规则和代码逻辑需求共同导致的,核心原因有两点:
Java局部变量的强制初始化约束:Java规定方法内的局部变量不会自动赋予默认值(类的成员变量才会有默认值)。如果不给
i设置初始值,当执行while (i > 0)时,编译器会检测到i的取值尚未确定,直接抛出「变量i可能尚未初始化」的编译错误,代码根本无法通过编译。这是Java为避免使用未定义变量值做的硬性规则。保证循环能正常启动执行:从业务逻辑来讲,我们需要让while循环至少执行一次,才能读取用户输入的第一个数。把
i初始化为1(任何正整数都可以),能确保第一次的i > 0条件成立,循环体得以进入执行,进而通过stdin.nextInt()读取输入覆盖i的初始值。如果i没有初始值(就算编译器允许),它的不确定值如果是非正的,循环会直接跳过,完全无法处理用户输入,不符合题目的需求。
简单来说,初始化i既是Java语法的硬性要求,也是保证代码逻辑能正常启动的必要操作。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

