【问题标题】:How to get get max value in java? [closed]如何在java中获得最大值? [关闭]
【发布时间】:2015-06-17 19:56:44
【问题描述】:

我正在编写一个程序,该程序根据一个人的收入查找税款。到目前为止,我遇到的问题是一些数字没有四舍五入到小数点后两位并继续前进,我不知道如何从所有数字中获取最大值。

这是我必须做的:

不超过 750 美元收入的 1%

$750-$2500 $7.5 加上超过 $750 金额的 2%

$2500-$5000 $82.5 加上超过 $2500 金额的 4%

$5000-$8000 $142.50 加上超过 $5000 金额的 5%

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

编写一个名为 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);

    }

【问题讨论】:

  • 自己做作业
  • 如果你不实现数组或列表,你会发现很难完成这样的任务
  • 您想要计算出的“应缴税款”的最大值吗?然后将n 的最大值存储在 if/else 块之后的max 变量中。
  • “如何解决小数位不四舍五入到小数点后两位的问题。” 通过在 Stack Overflow 上搜索。已经有几种解决方案。
  • 跟踪最大值的最简单方法是创建一个变量来存储您迄今为止记录的最大税收值。然后每次计算新的税值时,将其与当前的“最大值”进行比较,如果更大,则保存新值。

标签: java for-loop max


【解决方案1】:

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

【讨论】:

  • 我试过这个但是出错了
  • 你遇到了什么错误?密码是什么?
  • 没关系我修好了
  • 我猜错误是变量max的重新定义。您在循环外创建了一个,在循环内创建了一个。
【解决方案2】:

使用 Stream(为了好玩):

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

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-21
    • 1970-01-01
    • 2015-12-30
    • 2019-01-16
    相关资源
    最近更新 更多