比较IF语句中的多个整数,Java[英] Comparing multiple integers in IF statement, Java

问题描述

我是编码新手.我目前正在使用 Deitel 的"Java:How to program",早期的练习之一让我很困惑.

它要求我使用简单的第 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 个真,除了最小的数字,它将显示 4 个输出,而我所追求的只是最大的和最小的.

我被难住了.

推荐答案

表达式:

firstInt > secondInt, thirdInt, fourthInt, fifthInt

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

如果你想这样做,你需要的是 and 连词,有多个 complete 条件(使用 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) 将为您提供 a 和 b 中最大的值:

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

在这里,您将所有五个数字中的最大值定义为 {a, maximum-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 语句和输出).

本文地址:https://www.itbaoku.cn/post/978547.html