在Java中,如何在if语句中为变量赋值
我需要这样做在Java中,如何在if语句中为变量赋值,java,Java,我需要这样做 if (first_var > second_var) int difference = first_var - second_var; if (first_var < second_var) int difference = second_var - first_var; if(第一个变量>第二个变量) int差=第一个变量-第二个变量; 如果(第一个变量
if (first_var > second_var)
int difference = first_var - second_var;
if (first_var < second_var)
int difference = second_var - first_var;
if(第一个变量>第二个变量)
int差=第一个变量-第二个变量;
如果(第一个变量<第二个变量)
int差=第二个变量-第一个变量;
当我试图编译它时,会出现一个错误,说明变量“difference”可能尚未初始化。将变量“difference”设为全局变量也无济于事 您需要了解的问题有:
- 变量的范围
- 块声明及其创建新作用域的方式
- 为什么您更喜欢对
语句使用if
块{…}
- 如何保证明确的分配
- 何时使用
而不是if-else
if(something){…}if(!something){…}
int difference = Math.abs(firstVar - secondVar);
请注意,Math.abs
有一个特殊情况:当参数为Integer.MIN\u VALUE
时,返回值为Integer.MIN\u VALUE
。这是因为-Integer.MIN\u VALUE==Integer.MIN\u VALUE
。这里的问题是数字的32位2的补码表示
工具书类
- (改为:最负数)
尝试#1:在
if
下面是修复代码段的一次尝试,方法是在if
int difference;
if (first_var > second_var) {
difference = first_var - second_var;
}
if (first_var < second_var) {
difference = second_var - first_var;
}
// note: difference is not definitely assigned here!
// (but at least it's in scope!)
初学者倾向于这样做,但这排除了产生差异
a最终
局部变量的可能性,因为它可能被赋值两次
尝试#3:
if-else
这里有一个更好的尝试:
final int difference;
if (first_var > second_var) {
difference = first_var - second_var;
} else {
difference = second_var - first_var;
}
// note: difference is in scope, and is definitely assigned here,
// (and declared final)
在这方面仍有改进的方法
尝试#4:三元/条件运算符 一旦您对该语言和编程更熟悉,您可以使用以下习惯用法:
final int difference = (first_var > second_var) ? first_var - second_var
: second_var - first_var;
这使用了?:
三元/条件运算符。一定要小心这个操作员;它有一些行为可能令人惊讶,而且它肯定会被滥用。谨慎、明智、习惯地使用
工具书类
int difference = first_var > second_var ? first_var - second_var : second_var - first_var;
int difference = 0;
if (first_var > second_var)
difference = first_var - second_var;
if (first_var < second_var)
difference = second_var - first_var;
int差=0;
如果(第一个变量>第二个变量)
差异=第一个变量-第二个变量;
如果(第一个变量<第二个变量)
差异=第二个变量-第一个变量;
只能在一个位置声明变量 基本的解决办法是
int difference;
if (first_var > second_var)
difference = first_var - second_var;
if (first_var < second_var)
difference = second_var - first_var;
这是因为变量可能确实没有初始化。实际上,如果
first_var
和second_var
彼此相等,它就不会被初始化。除此之外,即使您添加了第三个if
,编译器也可能没有足够的智能来理解它。将声明移到if
s之外,并将其初始化为该行上的值
int difference = 0;
if (first_var > second_var)
difference = first_var - second_var;
if (first_var < second_var)
difference = second_var - first_var;
首先,您必须在ifs语句之外定义巡更变量“差异”:
int difference;
if (first_var > second_var)
difference = first_var - second_var;
if (first_var < second_var)
difference = second_var - first_var;
int差;
如果(第一个变量>第二个变量)
差异=第一个变量-第二个变量;
如果(第一个变量<第二个变量)
差异=第二个变量-第一个变量;
然后,编译器无法确保在执行两个ifs语句后,您的变量将有一个值。例如,如果第一个变量和第二个变量具有相同的值,则不会分配差异。因此,如果尝试使用变量,将出现编译时错误
要解决此问题,您有两种解决方案:
第一种解决方案是为变量提供一个默认值,如果没有其他条件完成,将使用该值:
int difference = 0;
if (first_var > second_var)
difference = first_var - second_var;
if (first_var < second_var)
difference = second_var - first_var;
int差=0;
如果(第一个变量>第二个变量)
差异=第一个变量-第二个变量;
如果(第一个变量<第二个变量)
差异=第二个变量-第一个变量;
另一种解决方案是使用elseif语句。使用else if语句时,编译器能够确定是否在所有情况下都将分配变量:
int difference;
if (first_var > second_var) {
difference = first_var - second_var;
} else if (first_var < second_var) {
difference = second_var - first_var;
} else {
difference = 0;
}
int差;
如果(第一个变量>第二个变量){
差异=第一个变量-第二个变量;
}否则如果(第一个变量<第二个变量){
差异=第二个变量-第一个变量;
}否则{
差异=0;
}
确实可以在if语句中指定变量,但不能在if语句中初始化变量。简单地说,您可以在if语句中为变量赋值,但不能在if语句中创建变量。这是因为如果不满足if条件,if语句中的代码可能永远不会运行
下面是我编写代码的方式:
int difference = 0;
if (first_var > second_var)
difference = first_var - second_var;
else if (first_var < second_var)
difference = second_var - first_var;
int差=0;
如果(第一个变量>第二个变量)
差异=第一个变量-第二个变量;
否则如果(第一个变量<第二个变量)
差异=第二个变量-第一个变量;
它可能没有被初始化的原因是您考虑了A
if (first_var > second_var)
int difference = first_var - second_var;
if (first_var < second_var)
int difference = second_var - first_var;
if (first_var == second_var)
int difference = 0;
if(第一个变量>第二个变量)
int差=第一个变量-第二个变量;
如果(第一个变量<第二个变量)
int差=第二个变量-第一个变量;
如果(第一个变量==第二个变量)
int差=0;
使用{…}
是一种风格选择。当然,如果你不小心的话,你可能会遇到悬而未决的else问题,但是如果你忽略了{…}
:)@Peter Alexander格式化和缩进也是一种样式选择的话,那么教训就是要小心。。。明白我的意思吗?;)
int difference;
if (first_var > second_var) {
difference = first_var - second_var;
} else if (first_var < second_var) {
difference = second_var - first_var;
} else {
difference = 0;
}
int difference = 0;
if (first_var > second_var)
difference = first_var - second_var;
else if (first_var < second_var)
difference = second_var - first_var;
if (first_var > second_var)
int difference = first_var - second_var;
if (first_var < second_var)
int difference = second_var - first_var;
if (first_var == second_var)
int difference = 0;