用 if 语句求绝对值
Posted
技术标签:
【中文标题】用 if 语句求绝对值【英文标题】:Finding absolute value with if statement 【发布时间】:2015-12-20 07:54:57 【问题描述】:我有 2 个 int 变量需要用户输入,我需要找到它们差的绝对值,有没有办法按照我在这段代码中开始的相同原理来做?
Scanner scn = new Scanner(System.in);
int yourfloor, elefloor, desfloor;`enter code here`
System.out.println("Please enter your current floor");
yourfloor = scn.nextInt();
System.out.println("Please enter the elevator current floor(before inviting)");
elefloor = scn.nextInt();
System.out.println("Please enter your destination floor");
desfloor = scn.nextInt();
int getTime = yourfloor - elefloor;
if (getTime<0);
getTime*(-1);
【问题讨论】:
您的代码似乎在这里有一个不需要的分号,if (getTime<0);
,除此之外,您的代码面临哪些问题?
问题出在 getTime*(-1);
【参考方案1】:
三元运算符呢?
//ASSIGNMENT CONDITION ? WHAT IF TRUE : WHAT IF FALSE
int getTime = (yourfloor > elefloor) ? (yourfloor - elefloor) : (elefloor-yourfloor);
或者通过改变你的代码来工作:
int getTime = yourfloor - elefloor;
if (getTime<0)
getTime *= -1;
if
末尾的 ;
完成了 if 语句 - 所以 *(-1)
总是被执行。另外,你需要使用*=
而不是*
,因为如果你只是将它相乘,它不会对结果做任何事情,而*=
是getTime = getTime * -1
的缩写,它会将它分配回getTime
.
或者你可以使用Math.abs()
...
【讨论】:
似乎是一种非常复杂的获取绝对值的方法,三元语句不太可读(括号会有所帮助),但对于新手来说可能会回避使用它。三元运算符不是自然需要。我认为应该首选Math.abs()
,因为他专门询问绝对值。
对。但这有一种“作业”之类的问题的感觉——所以可能数学是不允许的。请参阅我对“使其正确”的编辑。
然后...检查一下 Math.abs 的实现:return (a < 0) ? -a : a;
三元运算符再次...【参考方案2】:
试试abs()
,它接受一个任意类型的数字作为参数,并以相同的类型返回它的绝对值。
abs(-3.1) == 3.1
所以你可以写:
int getTime = abs(yourfloor - elefloor);
【讨论】:
以上是关于用 if 语句求绝对值的主要内容,如果未能解决你的问题,请参考以下文章