Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中查找第二个最大整数的程序(添加选项)_Java_Command Line Arguments - Fatal编程技术网

在Java中查找第二个最大整数的程序(添加选项)

在Java中查找第二个最大整数的程序(添加选项),java,command-line-arguments,Java,Command Line Arguments,我有一个如下所示的代码,它从命令行中查找第二大数字。 例如: java FindSecondMax 3 4 5 6 产量将是第二大,为5 当用户输入相同的数字时,我想显示没有第二大数字。例如4 我该怎么做 public class FindSecondMax { public static void main(String args[]) { int max = Integer.parseInt(args[0]); int i = 1; while (i <

我有一个如下所示的代码,它从命令行中查找第二大数字。 例如:

java FindSecondMax 3 4 5 6
产量将是第二大,为5

当用户输入相同的数字时,我想显示
没有第二大数字。例如4

我该怎么做

public class FindSecondMax {
    public static void main(String args[]) {
    int max = Integer.parseInt(args[0]);
    int i = 1;
    while (i < args.length) {
        int nums =Integer.parseInt(args[i]);
        if (nums > max)
        max = nums;
        i++;
    }
    int max1 = max;
    max = Integer.parseInt(args[0]);
    int j = 1;
    while (j < args.length ) {
        int nums = Integer.parseInt(args[j]);
        if (nums > max && nums < max1)
        max =nums;
        j++;
    }
    int max2 = max;
    System.out.println(max2);
    }
}
公共类FindSecondMax{
公共静态void main(字符串参数[]){
int max=Integer.parseInt(args[0]);
int i=1;
而(imax)
max=nums;
i++;
}
int max1=最大值;
max=Integer.parseInt(args[0]);
int j=1;
而(jmax&&nums
只需检查所有数字是否相等即可

if(isAllEqual(args)){
系统输出打印(“无第二个编号”);
}否则{
系统输出打印(max2);
}
}//干管末端
公共静态布尔isAllEqual(字符串[]){
//确定数组中的每个元素是否相等
布尔值anw=true;
对于(int i=1;i}
对代码的唯一更改是:

  • 在计算最大值的第一个循环中捕获最小值
  • 告诉用户没有第二个最大值,如果(最小==最大值)其他。。。你以前的逻辑是什么

    public class FindSecondMax {
    
    public static void main(String args[]) {
    
    int max = Integer.parseInt(args[0]);
    int min = Integer.MAX_VALUE;
    int i = 1;
    while (i < args.length) {
    
        int nums = Integer.parseInt(args[i]);
    
        if (nums > max)
            max = nums;
        if (nums < min)
            min = nums;
        i++;
    }
    
    if (min == max) {
        System.out.println("There is no secondmax");
    } else {
        int max1 = max;
        max = Integer.parseInt(args[0]);
        int j = 1;
        while (j < args.length) {
            int nums = Integer.parseInt(args[j]);
    
            if (nums > max && nums < max1)
                max = nums;
            j++;
        }
        int max2 = max;
        System.out.println(max2);
    }
    }
    }
    
    公共类FindSecondMax{
    公共静态void main(字符串参数[]){
    int max=Integer.parseInt(args[0]);
    int min=整数最大值;
    int i=1;
    而(imax)
    max=nums;
    如果(numsmax&&nums

  • 注意:排序将有助于您的方法。最小值/最大值是微不足道的,第二大值是从最大值开始的简单迭代,直到得到一个不同的数字。

    这不是“做我的家庭作业网站”,但我会尝试用上面的答案为您指出一个方向。一个相当简单的方法是在第一个循环中计算最小值。如果min==max,你就没有第二个了。好的,整个类现在都在那里了。谢谢你的工作。如果你标记为已接受,如果这个代码满足你的需要,我将不胜感激。干杯