中易网

小代码排错

答案:2  悬赏:80  
解决时间 2021-04-27 11:28
  • 提问者网友:醉归
  • 2021-04-27 01:29

public class Pay {

 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
double shirt = 245;               //T恤单价
int shirtNo = 2;                  //T恤个数

double shoeprice = 570;           //网球鞋单价
int shoeNo = 1;                  //网球鞋个数

double padprice = 320;           //网球拍单价数
int padNo = 1;                   //网球拍个数

int discount = 8;                //折扣


double finalpay = (shirt*shirtNo) + (shoeprice*shoeNo)+(padprice*padNo)*0.8;
//消费总额
double returnMoney = 1500 - finalpay; //找钱
double socre = finalpay*3/100; //积分

System.out.println("* * * * * *消费单* * * * * *");
System.out.println("购买物品\t"+"单价\t\t"+"个数\t\t"+"金额");
System.out.println("T恤\t"+"¥245\t\t"+"2\t\t"+"¥490");
System.out.println("网球鞋\t"+"¥570\t\t"+"1\t\t"+"¥570");
System.out.println("网球拍\t"+"¥320\t\t"+"1\t\t"+"¥320\n");

System.out.println("折扣\t"+discount);
System.out.println("金额总计\t"+"¥"+finalpay);
System.out.println("实际交费\t"+"¥1500");
System.out.println("找钱\t"+"¥"+returnMoney);
System.out.println("本次购物所获的积分是"+socre);


   }
 

}

以上是我的代码,但正确答应该是

正确答案应该是
  折扣 8
金额总计 ¥1104.0
实际交费 ¥1500
找钱 ¥396.0
本次购物所获的积分是33
请问我哪里写错了?

最佳答案
  • 二级知识专家网友:都不是誰的誰
  • 2021-04-27 02:52

1、金额总计 ¥1104.0   出现错误原因:


源程序中:
double finalpay = (shirt*shirtNo) + (shoeprice*shoeNo)+(padprice*padNo)*0.8;


改成:
double finalpay = ((shirt*shirtNo) + (shoeprice*shoeNo)+(padprice*padNo))*0.8;


因为你所购买的所有商品都是按折扣8购买,而你的程序中 只有  padprice(网球拍)是按 8 折计算的


2、本次购物所获的积分是33  带有小数点原因是:


你计算时 使用的类型是 double  类型


    double socre = finalpay*3/100; //积分


改成:


    int  socre =(int) finalpay*3/100; //积分


修改后运行:程序正确

全部回答
  • 1楼网友:陪衬角色
  • 2021-04-27 03:43

大概看了下,程序执行流程是没有问题的,如果输出和预算的结果不一样只有两种可能:

1。 数据类型转换中发生了数据位的丢失

2。 本身抒写计算的错误

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息