我正在编写一个根据个人收入查找税收的计划。到目前为止,我遇到的问题是出现的一些数字不会向上取两个小数位并继续前进,我不知道如何从所有数字中获得最大值。
以下是我必须做的事情:
收入不超过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-15);
要求用户输入每个人的应纳税所得额,然后
显示到期税;
这是我的代码:
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 :(得分: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();