在Rahmania的国家/地区,邮寄信件的费用是:对于30克以下的信件,邮资为40锡纳斯;对于30克以上和50克以下的信件,邮寄为55锡纳斯;对于50克至100克以下的信件,邮寄为70锡纳斯。每增加50克或不足50克,则增加25窦。编写一个程序,提示用户输入大量信息,然后给出邮寄具有该质量的信件的费用。

class Mail
{
  public static void main (String args[])
  {
    System.out.println("What is the mass of you letter?");
    int mass=In.getInt();

    if(mass<30)
    {
      System.out.println("The cost for mailing your "+mass+"g would be 40 sinas.");
    }
    else if(mass>30&&mass<50)
    {
      System.out.println("The cost for mailing your "+mass+"g would be 55 sinas.");
    }
    else if(mass>50&&mass<100)
    {
      System.out.println("The cost for mailing your "+mass+"g would be 70 sinas.");
    }
    else
    {
      int changingMass=0;
      mass=changingMass;
      changingMass=changingMass-100;
      changingMass=changingMass/50;
      int totalSinas=changingMass*25+(70);

      System.out.println("The cost for mailing your "+mass+"g would be "+totalSinas+" sinas.");
    }
  }
}


如果我输入200的质量,我会得到0g和20 sinas。为什么我什至尝试阅读代码,对我来说也很好。
我认为问题是changingMass = changingMass / 50;

最佳答案

您已初始化以下变量。

int changingMass=0;


然后,将其分配给所需的变量mass(这是用户输入)。这使得mass=0在下面。

mass=changingMass;


然后,您将0用于所有计算,这是一个严重的错误。这就是为什么您在else子句中总是得到20窦的原因。

changingMass=changingMass-100;
changingMass=changingMass/50;
int totalSinas=changingMass*25+(70);


不要修改用户输入mass

int changingMass=0;
//use the user input 'mass' for the first calculation of changingMass
changingMass=mass-100;
changingMass=changingMass/50;
int totalSinas=changingMass*25+(70);


希望你明白了。

10-08 13:25