Java:在用户设置的多个整数列表中查找最大数字

时间:2012-09-12 04:43:58

标签: java list loops

下面的代码可以完美地编译用户输入的5个整数。 我想要做的是改变我的代码,以便我可以作为用户在列表中想要多少个数字。然后程序将要求用户输入那么多整数,然后程序将找到最大的整数。任何人都可以帮我改变下面的代码以适应这些新标准吗?

{
    int integer1 = 
    Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer:" ));
    int integer2 = 
    Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer:" ));
    int integer3 = 
    Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer:" ));
    int integer4 = 
    Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer:" ));
    int integer5 = 
    Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer:" ));   

    if (integer1 > integer2 && integer1 > integer3 && integer1 > integer4 && integer1 > integer5)
        JOptionPane.showMessageDialog(null, "The largest number is: " + integer1);
    if (integer2 > integer1 && integer2 > integer3 && integer2 > integer4 && integer2 > integer5)
        JOptionPane.showMessageDialog(null, "The largest number is: " + integer2);
    if (integer3 > integer2 && integer3 > integer1 && integer3 > integer4 && integer3 > integer5)
        JOptionPane.showMessageDialog(null, "The largest number is: " + integer3);
    if (integer4 > integer1 && integer4 > integer3 && integer4 > integer2 && integer4 > integer5)
        JOptionPane.showMessageDialog(null, "The largest number is: " + integer4);
    if (integer5 > integer1 && integer5 > integer3 && integer5 > integer4 && integer5 > integer2)
        JOptionPane.showMessageDialog(null, "The largest number is: " + integer5);
 }

我首先要提示用户

how many integers do you want in your list?

然后我想说

enter an integer: 

用户说他想要多次。

7 个答案:

答案 0 :(得分:11)

这里的关键是使用Collections.max

  

根据元素的自然顺序返回给定集合的最大元素。

Integer的自然顺序是从最小到最大,即提升。这使得它非常适合在这里使用。

int largest = Collections.max(Arrays.asList(integer1, integer2, integer3,
    integer4, integer5));

或者,您可以使用循环来构建List。请参阅下面的代码,提示用户输入要输入的整数。

int n = Integer.parseInt(
    JOptionPane.showInputDialog("How many integers do you want in your list?"));
List<Integer> inputs = new ArrayList<Integer>(n);
for (int i = 0; i < n; ++i) {
  inputs.add(Integer.parseInt(
      JOptionPane.showInputDialog("Enter an integer:")));
}
int largest = Collections.max(inputs);
JOptionPane.showMessageDialog(null, "The largest number is: " + largest);

答案 1 :(得分:3)

您知道如何从用户获取整数,因此新要求的第一部分很简单:

int n = Integer.parseInt(JOptionPane.showInputDialog(
    "how many integers do you want in your list?" ));

然后你需要循环并收集那么多整数。你不需要存储它们,因为你只是在寻找最大的那个。

int maxSoFar = Integer.MIN_VALUE;
for (int i = 0; i < n; ++i) {
    int integer = 
        Integer.parseInt(JOptionPane.showInputDialog( "enter an integer:" ));
    if (integer > maxSoFar) {
        maxSoFar = integer;
    }    
}

答案 2 :(得分:0)

以下是完整的解决方案:

首先从用户那里获取他们想要的数量,然后使用列表来存储这些数字,最后使用Collections.max(由@oldrinb建议)来查找最大数字。

您可以尝试以下操作:

List<Integer> listOfNumbers = new ArrayList<Integer>();
int count = Integer.parseInt(JOptionPane.showInputDialog( "how many integers do you want in your list?" ));

for(int i=1;i<=count;i++){
    int number = Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer::" ));
    listOfNumbers.add(number);
}
JOptionPane.showMessageDialog(null, "The largest number is: " + Collections.max(listOfNumbers));

答案 3 :(得分:0)

您可以这样做:

  1. 询问用户他想输入的整数数量:

    int a = Integer.parseInt(JOptionPane.showInputDialog( "Enter the size of the array:" ));
    
  2. 创建数组。

    int [] arr = new int[a];
    
  3. 阅读数字

    for (int i=0; i<a; i++){
        arr[i] = Integer.parseInt(JOptionPane.showInputDialog( "Enter an integer:" ));
    }
    
  4. 计算最大数字

    int max=0;
    for (int i=0; i<a; i++){
        if ( max < arr[i] ) {
            max = arr[i];
        }
    }
    
  5. 您将获得最大值

答案 4 :(得分:0)

我实际上有一个预制类,我设置它来查找任何值集的最大整数。您可以将此类放入项目中,只需在任何类中使用它,如下所示:

 System.out.println(figures.getLargest(8,6,12,9,120));

这将返回值“120”并将其放在输出中。如果您有兴趣使用它,那么这是方法源代码:

public class figures {

     public static int getLargest(int...f) {
          int[] score = new int[f.length];
          int largest=0;
          for(int x=0;x<f.length;x++) {
                for(int z=0;z<f.length;z++) {
                    if(f[x]>=f[z]) {
                    score[x]++;
                    }else if(f[x]<f[z]) {

                    }else {
                        continue;
                    }
                    if(z>=f.length) {
                    z=0;
                    break;
                    }
              }
       }
for(int fg=0;fg<f.length;fg++) {
    if(score[fg]==f.length) {
        largest = f[fg];
    }
}
return largest;
    }
}

答案 5 :(得分:-1)

导入javax.swing.JOptionPane;

public class Largest_String {     public static void main(String [] args){     int integer1 =     Integer.parseInt(JOptionPane.showInputDialog(“输入一个整数:”));     int integer2 =     Integer.parseInt(JOptionPane.showInputDialog(“输入一个整数:”));     int integer3 =     Integer.parseInt(JOptionPane.showInputDialog(“输入一个整数:”));     int integer4 =     Integer.parseInt(JOptionPane.showInputDialog(“输入一个整数:”));     int integer5 =     Integer.parseInt(JOptionPane.showInputDialog(“输入一个整数:”));

    int integer6 =             Integer.parseInt(JOptionPane.showInputDialog(“输入整数”));     int integer7 =              Integer.parseInt(JOptionPane.showInputDialog(“输入整数”));     int integer8 =              Integer.parseInt(JOptionPane.showInputDialog(“输入整数”));     int integer9 =              Integer.parseInt(JOptionPane.showInputDialog(“输入整数”));     int integer10 =              Integer.parseInt(JOptionPane.showInputDialog(“输入整数”));

if (integer1 > integer2 && integer1 > integer3 && integer1 > integer4 && integer1 > integer5 && integer1>integer6 && integer1>integer7 && integer1>integer8 && integer1>integer9 && integer1>integer10)
    JOptionPane.showMessageDialog(null, "The largest number is: " + integer1);
if (integer2 > integer1 && integer2 > integer3 && integer2 > integer4 && integer2 > integer5 && integer2>integer6 && integer2>integer7 && integer2>integer8 && integer2>integer9 && integer2>integer10)
    JOptionPane.showMessageDialog(null, "The largest number is: " + integer2);
if (integer3 > integer2 && integer3 > integer1 && integer3 > integer4 && integer3 > integer5 && integer3>integer6 && integer3>integer7 && integer3>integer8 && integer3>integer9 && integer3>integer10)
    JOptionPane.showMessageDialog(null, "The largest number is: " + integer3);
if (integer4 > integer1 && integer4 > integer3 && integer4 > integer2 && integer4 > integer5 && integer4>integer6 && integer4>integer7 && integer1>integer8 && integer1>integer9 && integer1>integer10)
    JOptionPane.showMessageDialog(null, "The largest number is: " + integer4);
if (integer5 > integer1 && integer5 > integer3 && integer5 > integer4 && integer5 > integer2 && integer5>integer6 && integer5>integer7 && integer5>integer8 && integer5>integer9 && integer5>integer10)
    JOptionPane.showMessageDialog(null, "The largest number is: " + integer5);
if(integer6 > integer1 && integer6 > integer3 && integer6 > integer4 && integer6 > integer2 && integer6>integer7 && integer6>integer8 && integer6>integer9 && integer6>integer10 && integer6>integer5)
    JOptionPane.showMessageDialog(null,"The largest number is:"+integer6);
if(integer7>integer1 && integer7>integer2 && integer7>integer3 && integer7>integer4 && integer7>integer5 && integer7>integer6 && integer7>integer8 && integer7>integer8 && integer7>integer9 && integer7>integer10)
    JOptionPane.showMessageDialog(null,"The largest number is:"+integer7);
if(integer8>integer1 && integer8>integer2 && integer8>integer3 && integer8>integer4 && integer8>integer5 && integer8>integer6 && integer8>integer7&& integer8>integer9 && integer8>integer10)
JOptionPane.showMessageDialog(null,"The largest number is:"+integer8);
 if(integer9>integer1 && integer9>integer2 && integer9>integer3 && integer9>integer4 && integer9>integer5 && integer9>integer6 && integer9>integer7&& integer9>integer8 && integer9>integer10)
      JOptionPane.showMessageDialog(null,"The largest number is:"+integer9);
   if(integer10>integer1 && integer10>integer2 && integer10>integer3 && integer10>integer4 && integer10>integer5 && integer10>integer6 && integer10>integer7&& integer10>integer8 && integer10>integer9)
       JOptionPane.showMessageDialog(null,"The largest number is:"+integer10);
    }
}

答案 6 :(得分:-1)

请勿尝试任何其他方法... 您如何看待这个easyone ...?

mov    eax,gs:0x14
mov    DWORD PTR [ebp-0xc],eax

非常容易...