Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单编码问题_Java - Fatal编程技术网

Java 简单编码问题

Java 简单编码问题,java,Java,在拉赫马尼亚州,邮寄一封30克以下的信件的费用是40西纳。在30克到50克之间,它是55西纳。在50克到100克之间,它是70西纳。超过100克,成本为70西纳,每增加50克或不足50克,额外增加25西纳。例如,101克将花费70+25=95西纳。149克也需要95个SINA,因为这两种包装都只使用前50克而不是100克。编写一个程序,提示用户进行邮件群发,然后给出邮寄具有该群发邮件的成本 这就是问题所在,我唯一不知道怎么做的是最后一部分,每增加50克,就增加25个SINA 有人能告诉我如何写这

在拉赫马尼亚州,邮寄一封30克以下的信件的费用是40西纳。在30克到50克之间,它是55西纳。在50克到100克之间,它是70西纳。超过100克,成本为70西纳,每增加50克或不足50克,额外增加25西纳。例如,101克将花费70+25=95西纳。149克也需要95个SINA,因为这两种包装都只使用前50克而不是100克。编写一个程序,提示用户进行邮件群发,然后给出邮寄具有该群发邮件的成本

这就是问题所在,我唯一不知道怎么做的是最后一部分,每增加50克,就增加25个SINA

有人能告诉我如何写这部分代码吗

顺便说一句,我使用netbeans

Scanner input = new Scanner(System.in);
double l;
l = input.nextInt();
x = l >= 100 / 50 * 25 + 70;
if (l <= 30) {
    System.out.println("40 Sinas");
}
if (l > 30 && l < 50) {
    System.out.println("55 Sinas");
}
if (l > 50 && l < 100) {
    System.out.println("70 Sinas");
}
if (l >= 100) {
    System.out.println("");
}
下面是代码的重要部分。如您所见,我需要关于最后一部分的帮助。

解决方案:

Scanner input = new Scanner(System.in);
int l; // it should be int if read int
l = input.nextInt();
if (l <= 30) {
    System.out.println("40 Sinas");
}
if (l > 30 && l < 50) {
    System.out.println("55 Sinas");
}
if (l > 50 && l < 100) {
    System.out.println("70 Sinas");
}
if (l >= 100) {
    System.out.println(((((l - 100) / 50) + 1) * 25) + 70);
}

我只想指出,Krayo的解决方案有一个主要问题。如果重量值正好是100,使用该计算,实际上您将向客户额外收取25 SINA。这是由计算的+1部分引起的

如果重量为100,则超过100的50克间隔数为0重量-100=0。因此,客户不应该收取任何费用,因为问题的措辞表明超过100克。。。。但是,由于您要添加1,在执行额外成本计算之前,客户将不必要地额外获得25 SINA

相反,为了确保正确的金额为这一点,以及所有其他情况下,我会使用的方法,而不是。此方法将值四舍五入到最接近的整数。例如,5.2变为6.0,5.0保持为5.0

因此,您的计算结果如下所示:

int cost = (int) (Math.ceil((weight - 100) / 50.0f) * 25) + 70;
请注意,我们需要使用一个浮点值,以确保最终得到一个十进制值。由于Math.ceil返回一个double,我们只需将它转换回整数

这是一个示例程序来演示这一点:

public class CalculationTesting {

    public static void main(String[] args){
        int weight = 100;

        int good_cost = (int) (Math.ceil((weight - 100) / 50.0f) * 25) + 70;
        int bad_cost = ((((weight - 100) / 50) + 1) * 25) + 70;

        System.out.println("Weight = " + weight + "g");
        System.out.println("Good cost calculation = $" + good_cost);
        System.out.println("Bad cost calculation = $" + bad_cost);
    }
}
可以将“权重”值更改为“实验”

哪些产出:

重量=100克 良好的成本计算=70美元 错误的成本计算=95美元


其他人不会帮你做家庭作业,但如果你有困难,他们会帮助你。请阅读如何做。特别是,你应该发布你已经编写的代码,以及你遇到的问题的描述。不要在评论中…你可以编辑你的问题并在那里添加相关代码。这主要是一个数学问题。在最初的100克之后,每增加50克,您需要收费。你如何确定你有多少个50克的间隔?字母质量减去100除以50?我有一个关于+1的问题,为什么我们需要它?应该是:System.out.printlintl-100/50+1*25+70@戈登l=101;101-100=1; 1/50=0整数除法;0+1=1; 1*25=25; 25+70=95; 当然还有另一种计算方式