用 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&lt;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 &lt; 0) ? -a : a; 三元运算符再次...【参考方案2】:

试试abs(),它接受一个任意类型的数字作为参数,并以相同的类型返回它的绝对值。

abs(-3.1) == 3.1

所以你可以写:

int getTime = abs(yourfloor - elefloor);

【讨论】:

以上是关于用 if 语句求绝对值的主要内容,如果未能解决你的问题,请参考以下文章

编写程序用下面公式求π的近似值 π/4 ≈ 1- 1/3+1/5-1/7+…… 直到最后一项的绝对值小于10-7 为止

求绝对值

C++求两个数的最大值

C语言求一个数的绝对值

5.js中的判断if和for

如何在Matlab求绝对值