java - Java中IF语句比较多个整数

标签 java

我是编码新手。我目前正在使用 Deitel 的“Java:如何编程”,早期的练习之一让我难住了。

它要求我使用简单的第 1 章 if 语句来比较 5 个整数(由用户输入)并显示最大和最小。我受限于第一章中使用的语言,因此我假设我可以在 if 语句后面的括号中列出 int 值。像这样的东西:

int firstInt;
int secondInt;
int thirdInt;
int fourthInt;
int fifthInt;

if (first Int> secondIt, thirdInt, fourthInt, fifthInt)

等等。但这是一个语法错误。有谁知道如何同时比较多个值?谷歌搜索被证明没有帮助,因为所有答案都有一些我不明白的复杂解决方案。

如果我尝试这样的事情:

     if (one > two)
     System.out.println("%d is the largest number!", one);

     if (one > three)

等等。对于所有 1 - 5,我遇到的问题是当我继续使用 if 语句 1>2,3,4,5 2>1,3,4,5 等时,那么每个整数都会有 1 个 true,无论除了最小的数字,它会显示 4 个输出,而我只追求最大和最小。

我被难住了。

最佳答案

表达式:

firstInt > secondInt, thirdInt, fourthInt, fifthInt

无效,因为 Java 是一种计算机语言而不是自然语言(如英语)。

如果你想这样做,你需要的是 and 连词,以及多个完整条件(使用 a,b,c,d ,e 以最小化代码):

if ((a >= b) && (a >= c) && (a >= d) && (a >= e)) { // a >= b,c,d,e
    System.out.println ("Largest is: " + a);
} else if ((b >= c) && (b >= d) && (b >= e)) {      // b >= c,d,e
    System.out.println ("Largest is: " + b);
} else if ((c >= d) && (c >= e)) {                  // c >= d,e
    System.out.println ("Largest is: " + c);
} else if (d >= e) {                                // d >= e
    System.out.println ("Largest is: " + d);
} else {                                            // e > d
    System.out.println ("Largest is: " + e);
}

请记住,一旦您确定a(或后续步骤中的任何其他内容)不是最大的,您就无需再次检查它,因为其他其中之一比它大。

<小时/>

或者您可以使用 Java 标准 Math 包的功能,其中 Math.max(a,b) 将为您提供 中的最大值>ab:

int largest = Math.max(a,Math.max(b,Math.max(c,Math.max(d,e))));

在这里,您将所有五个数字中的最大值定义为对{a, max-of-bcde}的最大值,然后使用类似的方法计算出maximum-of- bcde作为集合{b,maximum-of-cde}的最大值,依此类推。

或者,换句话说,从{d,e}中选择最大的一个并将其命名为x。然后从{c,x}中选择最大的一个并将其命名为y。然后从 {b,y} 中取出最大的,并将其称为 z。最后是 {a,z} 中最大的一个,这就是五个值中的最大值。

不过,说实话,如果您正在阅读介绍性文本的第一章,它可能还没有涵盖 Java 标准库中的太多内容。

<小时/>

但是,如果您正在寻找一种对于初学者来说可能更容易理解流程的方法,我认为您不能超越这个:

int maxOfFive (int a, int b, int c, int d, int e) {
    int largest = a;
    if (b > largest) largest = b;
    if (c > largest) largest = c;
    if (d > largest) largest = d;
    if (e > largest) largest = e;
    return largest;
}

这是对最大值的基本选择就像一个人会做的那样,一个接一个地扫描列表并记住哪个值是最高的,然后返回它。

或者,如果您还没有了解函数(并恢复到原始变量),只需实现相同的代码,无需函数调用:

int largest = firstInt;
if (secondInt > largest) largest = secondInt;
if (thirdInt  > largest) largest = thirdInt;
if (fourthInt > largest) largest = fourthInt;
if (fifthInt  > largest) largest = fifthInt;
System.out.println ("Largest is: " + largest);

我相信这可能只是使用了您已经表明您了解的内容(变量、单条件 if 语句和输出)。

关于java - Java中IF语句比较多个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28020093/

相关文章:

java - 以编程方式提取 JarFile 模块名称的最佳方法是什么?

java - Spring的@Required注解推荐用法

java - 为什么 JVM 无法在 Linux 上获取输入文本区域设置

java - itext5 的 sandbox.jar 文件?

Java 扫描器 while 循环

java - 在使用 poi 读取 Excel 文件之前保存其内容

java - 在 Java 中推广?

java - 打电话 Intent 不起作用 - 小米手机

java - 一个线程中的 Thread.sleep() 使 UI 线程也进入休眠状态

java - Spring Boot 安全 OAuth2 : WebSecurityConfigurerAdapter: 302 Redirect to/error