如何在java中获取最大值?

时间:2015-06-17 19:56:45

标签: java for-loop max

我正在编写一个根据个人收入查找税收的计划。到目前为止,我遇到的问题是出现的一些数字不会向上取两个小数位并继续前进,我不知道如何从所有数字中获得最大值。

以下是我必须做的事情:

收入不超过750美元

$ 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. 范围内的随机数
  3. 要求用户输入每个人的应纳税所得额,然后

  4. 显示到期税;

    1. 在屏幕上显示税的最大值。
    2. 这是我的代码:

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

2 个答案:

答案 0 :(得分:3)

您可以在不需要数组的情况下跟踪最大值。解决方案是将最大值初始化为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)返回两个给定值的最大值。

答案 1 :(得分:1)

使用Stream(为了它的乐趣):

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