【问题标题】:Java: find the largest number in a list of a number of integers that the user has setJava:在用户设置的整数列表中查找最大数
【发布时间】:2012-09-05 01:41:12
【问题描述】:

下面的代码可以完美编译用户输入的 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: 

用户说他想要的次数。

【问题讨论】:

  • 我怀疑这是作业。您将需要循环并使用数组来收集输入整数。那是你需要帮助的吗?或者,您可以在获取它们时跟踪哪个输入最大,而不是数组。

标签: java list loops


【解决方案1】:

这里的关键是使用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);

【讨论】:

  • 我正在尝试强制换行,并且允许在多个字符上进行换行。我需要找到允许断点的最大索引。 Collections.max() 答案对我很有用。谢谢!
【解决方案2】:

你知道如何从用户那里获取整数,所以新需求的第一部分很简单:

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;
    }    
}

【讨论】:

  • 我正要说同样的话。
【解决方案3】:

完整的解决方案如下:

首先从用户那里获取他们想要多少个数字,然后使用 list 来存储这些数字,最后使用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));

【讨论】:

    【解决方案4】:

    你可以这样做:

    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】:

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

       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;
          }
      }
      

      【讨论】:

        【解决方案6】:

        导入 javax.swing.JOptionPane;

        公共类 Largest_String{ 公共静态无效主要(字符串[]参数){ 整数1 = Integer.parseInt(JOptionPane.showInputDialog("输入一个整数:")); 整数2 = Integer.parseInt(JOptionPane.showInputDialog("输入一个整数:")); 整数3 = Integer.parseInt(JOptionPane.showInputDialog("输入一个整数:")); 整数4 = Integer.parseInt(JOptionPane.showInputDialog("输入一个整数:")); 整数5 = Integer.parseInt(JOptionPane.showInputDialog( "输入一个整数:" ));
        整数6= Integer.parseInt(JOptionPane.showInputDialog("输入一个整数")); 整数 7= Integer.parseInt(JOptionPane.showInputDialog("输入一个整数")); 整数8= Integer.parseInt(JOptionPane.showInputDialog("输入一个整数")); 整数9= Integer.parseInt(JOptionPane.showInputDialog("输入一个整数")); 整数10= 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);
            }
        }
        

        【讨论】:

        【解决方案7】:

        不要尝试任何其他方法... 你怎么看这个easyone...?

        import java.util.Scanner;
        public class Find_Max_Number{
        
        double input =0;
        double number=0;
        
        Scanner in = new 
        Scanner(System.in);
        
        System.out.print("Please Enter 
        Number or -1 to Quit: ");
        input = in.nextDouble;
        
        while(input!=-1){
        
        input = in.nextDouble();
        
        if(input>number){
        number=input;
        }
        
        System.out.println("The Largest 
        Number is: " +number);
        }
        }
        

        非常简单...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-29
          • 2015-07-04
          • 1970-01-01
          相关资源
          最近更新 更多