电话编程逻辑

时间:2018-07-26 20:14:18

标签: java logic

某些电话的使用率可以描述如下:

  

通话的第一分钟收费override func viewWillAppear(_ animated: Bool) { FirebaseFactory().getAvailableProducts(){ productsArray in // do something with your products self.products = productsArray // maybe reload data if you have a tableview self.tableView.reloadData() } } 美分。

     

从第二个到第十个(含)的每分钟每分钟花费min1美分。

     

第十分钟后,通话每多一分钟花费min2_10美分。

     

通话前,您的帐户中有min11美分。什么是   最长通话时间(以分钟为单位,四舍五入为分钟)   最接近的整数)可以拥有吗?

输入数据:

对于smin1 = 3min2_10 = 1min11 = 2,输出应为s = 20

这是为什么:

第一分钟的费用为3美分,因此您剩下20-3 = 17美分。 2分钟到10分钟的总费用为1 * 9 = 9,因此您可以多聊9分钟,而您仍然可以得到17-9 = 8美分。接下来的每一分钟收费2美分,这意味着您可以再通话8/2 = 4分钟。 因此,您可以拨打的最长电话为1 + 9 + 4 = 14分钟。

我不确定代码逻辑在哪里。

phoneCall(min1, min2_10, min11, s) = 14

3 个答案:

答案 0 :(得分:2)

在for循环内的if语句中,您可以在此处执行以下两项操作之一,以使返回值为14。

更改     sum=sum++;至     sum += 1;或删除     sum=就是这样     sum++;

这应该返回14作为总和。

答案 1 :(得分:0)

            sum=sum++;

应替换为sum++;

详细了解运算符优先级operator precedence and return values

答案 2 :(得分:-1)

您好@ShubhamSahay您必须像这样编写代码:

public static int phoneCall(int min1, int min2_10, int min11, int s) {
int sum=0;

if(s>=min1)
{
    sum++;
    s=s-min1;
    for(int i=1;i<=9;i++)
    {
        if(s>=min2_10)
            {
            /*Change 1*/ sum++;
            s=s-min2_10;
            }
        else
            break;
    }
    /*Change 2*/ sum=sum+(s/min11);             

} 
return sum;
}

这就是为什么
第一个变化:您只需要做sum ++
第二个变化:您必须将那些东西放在括号中