如何在 java 中获得最大值?

How to get get max value in java?

我正在编写一个程序,根据一个人的收入计算税收。到目前为止,我 运行 遇到的问题是一些数字没有四舍五入到小数点后两位并继续下去,我不知道如何从所有数字中得到最大值。

这是我必须做的:

不超过 $750 收入的 1%

750-2500 美元 7.5 美元加上 750 美元以上金额的 2%

2500-5000 美元 82.5 美元加上 2500 美元以上金额的 4%

5000-8000 美元 142.50 美元加上 5000 美元以上金额的 5%

超过 8000 美元 $230.00 加上 %6 超过 8000 美元的金额

编写一个名为IncomeTax.java的程序。

  1. 生成(1-15)范围内的随机人数;

  2. 要求用户输入每个人的应纳税所得额,然后

显示应付税款;

  1. 在屏幕上显示税收的最大值。

这是我的代码:

Scanner console=new Scanner(System.in);

    double tax=0;
    double income=0;
    Random rand=new Random();
    int randomNumber=rand.nextInt(14)+1;
    for(int i=1;i<=randomNumber;i++){
        System.out.println("Person: "+i);
        System.out.println("Please enter income: ");
     double n=console.nextDouble();


        if(n<750){
             n=n*.01;
             System.out.println("Tax due: $"+n);
        }else if(n<2500){
        n=0+7.5+(n*.02);
        System.out.println("Tax due: $"+n);
    }else if(n<5000){
        n=0+82.5+(n*.04);
        System.out.println("Tax due: $"+n);
    }else if(n<8000){
        n=0+142.50+(n*.05);
        System.out.println("Tax due: $"+n);
    }else if(n>8000){
        n=0+230+(n*.06);
        System.out.println("Tax due: $"+n);

    }

您可以在不需要数组的情况下跟踪最大值。解决方案是将最大值初始化为 0,然后对于每个数字,我们只保留前一个最大值和当前数字的最大值。算法是这样的:

double max = 0;
for(int i = 1; i <= randomNumber; i++) {
    double n = console.nextDouble();
    //your code that calculates n
    max = Math.max(max, n); //keeps track of the maximum value
    //... the rest of your code
}

Math.max(a, b) returns 两个给定值的最大值。

使用 Stream(为了好玩):

DoubleStream.Builder builder = DoubleStream.builder();
for(int i=1;i<=randomNumber;i++){
    // ...
    builder.add(n);
    // ...
}
double max = builder.build().max().getAsDouble();