比较IF语句中的多个整数,Java

时间:2015-01-19 07:53:45

标签: 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个为真,除非是最小的数字,它将显示4个输出,当我所追求的只是大和最小。

我很难过。

10 个答案:

答案 0 :(得分: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, 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语句和输出)。

答案 1 :(得分:1)

使用多个整数来存储数字确实有效但是它不是编码方式。你应该至少使用一个数组。

阵列速成课程:

Array是一组具有相似数据类型的变量。

创建数组:

<datatype>[] arrayName = new <datatype>[size];

//Example
int[] myValues = new int[5];   //create 5 int variables.

myValues[0];    //is similar to your firstInt
myValues[1];    //is similar to your secondInt
myValues[2];    //is similar to your thirdInt
myValues[3];    //is similar to your forthInt
myValues[4];    //is similar to your fifthInt

使用数组,您只需使用for循环来遍历变量。 同时进行(我猜你的意思是迭代),你需要数组

解决方案1:

//To find the largest
int largest = array[0];
for(int x=0; x<5; x++)
    if (array[x] > largest)
        largest = array[x];

//To find the smallest
int smallest= array[0];
for(int x=0; x<5; x++)
    if (array[x] < smallest)
        smallest= array[x];

或者,不使用循环和数组(不是那么优雅,但可能是你想要的): 使用Math.max()Math.min()

解决方案2:

int largest = Math.max(var1, var2);
largest = Math.max(largest, var3);
largest = Math.max(largest, var4);
largest = Math.max(largest, var5);

解决方案3:

最后,没有使用循环数组

int largest = 0;
if(firstInt > secondInt)
    largest = firstInt
else
    largest = secondInt;

if(thirdInt > largest)
    largest = thirdInt;
if(forthInt > largest)
    largest = forthInt;
if(fifthInt > largest)
    largest = fifthInt;

要查找最小值,只需将运算符从>更改为<

答案 2 :(得分:1)

我建议你知道比较使用数组的整数数量。以下是示例代码 -

这不是真正的答案,因为我没有使用if语句。虽然这是获得你想要的东西的一种方式。因为你是java的新手,想分享我的方法。

import java.util.Arrays;

public class JavaTest {
    public static void main(String[] args) {
        int values[] = {2,6,10,4,8};
        Arrays.sort(values);
        System.out.println("Min value : "+values[0]);
        System.out.println("Max value : "+values[values.length-1]);
    }
}

与java玩得很开心。

答案 3 :(得分:0)

比较多个if语句的唯一方法是使用:

if(integer > 1 && integer > 2 && integer > 3) //etc

否则你可以:

if(integer>1)
    if(integer>2) //etc

您不能使用逗号

在if语句中列出多个整数

答案 4 :(得分:0)

您可以使用以下方法:

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

或者最好的解决方案,在数组中填充您的值,然后迭代它们,如:

for(int i=1; i<list.length; i++) { //suppose the first element is one
   if(one <= list[i]) {
       break;
   }
   System.out.println("%d is the largest number!", one);
}

答案 5 :(得分:0)

我相信你要做的是

if (i1 > i2 
    && i1 > i3 
    && i1 > i4 
    && i1 > i5) {
    // i1 is the largest
}

虽然看起来不太优雅。通常我们希望在List或数组中存储多个整数,并通过对其进行排序或遍历列表来查找最大值。

答案 6 :(得分:0)

创建一个给定5个数字的数组,并尝试:

int numbers[] = new int[]{1,2,3,4,5};

 //assign first element of an array to largest and smallest
 int smallest = numbers[0];
 int largetst = numbers[0];

 for(int i=1; i< numbers.length; i++)
    {
      if(numbers[i] > largetst)
           largetst = numbers[i];
      else if (numbers[i] < smallest)
           smallest = numbers[i];
     }

System.out.println("Largest Number is : " + largetst);
System.out.println("Smallest Number is : " + smallest);

答案 7 :(得分:0)

根据您在赋值后使用变量的方式,您还可以创建一个数组并对其进行排序

int firstInt = 4;
int secondInt = 2;
int thirdInt = 3;
int fourthInt = 1;
int fifthInt = 5;

int[] arr = new int[5];
arr[0] = firstInt;
arr[1] = secondInt;
arr[2] = thirdInt;
arr[3] = fourthInt;
arr[4] = fifthInt;

Arrays.sort(arr);
System.out.println("smallest = " + arr[0]);
System.out.println("largest = " + arr[arr.length - 1]);

答案 8 :(得分:0)

我不知道第一章是多么简单,你没有学习的是什么功能主义者,但是简单地定义两个变量并给出它们的最小值和最大值:

int smallest = firstInt;
int largest = secondInt;

if(firstInt > secondInt ){
   largest = firstInt;
   if(thirdInt > firstInt ){
     largest = thirdInt;
      if(fourthInt > thirdInt ){
        largest = fourthInt;
         if(fifthInt > fourthInt){
            largest = fifthInt;
          }
       }
     }
 }

if(secondInt < firstInt){
   smallest= secondInt;
   if(thirdInt < secondInt){
     smallest = thirdInt;
      if(fourthInt < thirdInt ){
        smallest = fourthInt;
         if(fifthInt < fourthInt){
            smallest = fifthInt;
          }
       }
     }
}

System.out.println(smallest);
System.out.println(largest);

答案 9 :(得分:0)

所以我也有同样的问题,但是我能够用这个相当长的算法解决它。我认为它与Java没有任何关系,但我想听听您对此的看法。顺便说一句,这是一种算法,可以从用户的五个给定值中找到最大和最小值。

int [] vector = new int [5];
   for (int i=0; i<=4;i++)
   {
       System.out.print ("enter a number for vector [ "+i+"] :");
               vector [i]=input.nextInt();
   }
   for (int i =0; i<=4;i++)
   {
       System.out.print ("vector ["+i+"] is : "+vector [i]+"\n");
   }
  if (vector[0]>vector[1])
  {
      if (vector[0]>vector[2])
      {
          if (vector [0]>vector[3])
          {
              if(vector[0]>vector[4])
              {
                  System.out.print ("the biggest number is : "+vector[0]+"\n");
              }
          }
      }
  }
  if (vector[1]>vector[0])
  {
      if (vector[1]>vector[2])
      {
          if (vector [1]>vector[3])
          {
              if(vector[1]>vector[4])
              {
                  System.out.print ("the biggest number is : "+vector[1]+"\n");
              }
          }
      }
  }
  if (vector[2]>vector[0])
  {
      if (vector[2]>vector[1])
      {
          if (vector [2]>vector[3])
          {
              if(vector[2]>vector[4])
              {
                  System.out.print ("the biggest number is : "+vector[2]+"\n");
              }
          }
      }
  }
  if (vector[3]>vector[0])
  {
      if (vector[3]>vector[1])
      {
          if (vector [3]>vector[2])
          {
              if(vector[3]>vector[4])
              {
                  System.out.print ("the biggest number is : "+vector[3]+"\n");
              }
          }
      }
  }
  if (vector[4]>vector[0])
  {
      if (vector[4]>vector[1])
      {
          if (vector [4]>vector[2])
          {
              if(vector[4]>vector[3])
              {
                  System.out.print ("the biggest number is : "+vector[4]+"\n");
              }
          }
      }
  }
  if (vector[0]<vector[1])
  {
      if (vector[0]<vector[2])
      {
          if (vector[0]<vector [3])
          {
              if (vector[0]<vector[4])
              {
                  System.out.print ("the smallest number is : "+vector [0]+"\n");
              }
          }
      }
  }
  if (vector[1]<vector[0])
  {
      if (vector[1]<vector[2])
      {
          if (vector[1]<vector [3])
          {
              if (vector[1]<vector[4])
              {
                  System.out.print ("the smallest number is : "+vector [1]+"\n");
              }
          }
      }
  }
  if (vector[2]<vector[0])
  {
      if (vector[2]<vector[1])
      {
          if (vector[2]<vector [3])
          {
              if (vector[2]<vector[4])
              {
                  System.out.print ("the smallest number is : "+vector [2]+"\n");
              }
          }
      }
  }
  if (vector[3]<vector[0])
  {
      if (vector[3]<vector[1])
      {
          if (vector[3]<vector [2])
          {
              if (vector[3]<vector[4])
              {
                  System.out.print ("the smallest number is : "+vector [3]+"\n");
              }
          }
      }
  }
  if (vector[4]<vector[0])
  {
      if (vector[4]<vector[1])
      {
          if (vector[4]<vector [2])
          {
              if (vector[4]<vector[3])
              {
                  System.out.print ("the smallest number is : "+vector [4]+"\n");
              }
          }
      }
      }