繁体   English   中英

获取Java中的最大数量

[英]Get the maximum number in Java

我需要获得最多三个整数,但是当第二个数字小于零时,我的代码将不会给出输出。

package main;

import java.util.Scanner;

public class Max {
    public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    int a=in.nextInt();
    int b=in.nextInt();
    int c=in.nextInt();
    int max;
    if(a>b){
        if(a>c)max =a;
        else max =c;
      } 
    else{
        if(b>c)max=b;
        else max=c;
  System.out.println(max);
        }
    }
}

它通过了其他情况的考验。 你能告诉我为什么会这样吗?

这是因为您有println语句。 在第二个条件中,您希望它位于if语句之外。

public class Max {
    public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    int a=in.nextInt();
    int b=in.nextInt();
    int c=in.nextInt();
    int max;
    if(a>b){
        if(a>c)max =a;
        else max =c;
    } 
    else{
        if(b>c)max=b;
        else max=c;
        }
    }
    System.out.println(max);
}

您的print语句位于else块内,因此仅在转到else分支时才会执行。 将其移到else块之外。

...
else {
    if(b>c)
        max=b;
    else
        max=c;
}
System.out.println(max);

在存储您的int值的List上使用Collections.max()

package main;

import java.util.Scanner;

public class Max {
    public static void main(String[] args) {
    List<Integer> list = new ArrayList<>();
    Scanner in = new Scanner(System.in);
    int a= in.nextInt();
    list.add(a);
    int b= in.nextInt();
    list.add(b);
    int c= in.nextInt();
    list.add(c);
    System.out.println("Largest: " + Collections.max(list));
   }
}

我建议写单独的方法

public int max(int a, int b) {
    return Math.max(a, b);
}

并称它为

max(a, max(b, c));

这样代码更干净

将数字输入数组,而不是三个单独的变量。 那么您可以使用以下方法:

public int getLargest(int[] nums){
    int largest = Integer.MIN_VALUE;
    if(nums.length == 0)
        return -1;
    for(int i : nums){
        if(i > largest)
            largest = i;
    }
    return largest;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM