java试图根据给定条件使循环中的值为常量
我正在做一个练习,我以为我已经做完了,直到我意识到我的一些结果是错误的
这是我调用以获得结果的函数:
System.out.println(chargingSmartPhone(10, 50));
预计将于7月7日返回。我得了7分,但计算不对
我需要遵循以下指示:
S=10,T=50。在这种情况下,R=10适用,电荷变为10+10=20
现在充电率变为R=5,再过6分钟,充电率变为20+(5+5+5+5+5)=50
因此总时间:7分钟
这意味着我应该
10+10
20<;=十
==========
20+5
25<;=230
==========
25+5
30<;=230
==========
30+5
35<;=230
==========
35+5
40<;=230
==========
40+5
45<;=230
==========
45+5
50<;=230
==========
七,
但我得到的结果是:
10+10
20<;=十
==========
20+5
25<;=230
==========
25+8
33<;=559
==========
33+2
35<;=1009
==========
35+7
42<;=五千
==========
42+8
50<;=一万
==========
50+3
53<;=100000000
==========
七,
当初始充电+=r[I]大于正常工作的最终值时,我必须终止程序
下面是我的代码:
public static int chargingSmartPhone(int initialCharge, int finalCharge){
int count = 0;
int[] v = {10, 230, 559, 1009, 5000, 10000, 1000000000};
int[] r = {10, 5, 8, 2, 7, 8, 3};
for(int i = 0; i < v.length; i++){
if(initialCharge <= finalCharge) { // InitialCharge is S, FinalCharge is T
if (initialCharge <= v[i]) {
System.out.println(initialCharge + " + " + r[i]);
initialCharge += r[i];
System.out.println(initialCharge +" <= "+ v[i]);
System.out.println("==========");
count++;
}
}
}
return count;
}
public static void main(String[] args){
System.out.println(chargingSmartPhone(10, 50));
}
我做错了什么
# 1 楼答案
我想出了一个解决方案:
我想你对这个问题的理解可能有问题。以下是问题要求您使用输入10和50进行模拟的内容:
“由于初始充电是10,手机在1分钟内充电10个单位。现在,充电是20。因此,我现在将在1分钟内充电5个单位。由于充电(现在是25)仍然少于230,我现在将在1分钟内充电5个单位。”
如果你不断重复这个过程,最终需要7分钟才能达到60个充电单位
我处理这个问题的方式是,首先,我将迭代器
i
带到while循环的当前起始电荷然后,如果最终充电小于R的当前值(这意味着手机现在可以在不改变充电率的情况下充电到最终充电),我们只需计算从初始到最终和四舍五入需要多少分钟。记住在这里使用双精度来投射,这样我们就不会有被截断的风险
但是,如果在不改变充电率的情况下无法达到最终充电,我们将使用类似的数学方法将初始充电提高到当前的V值
但是,我们需要考虑的一种情况是,如果我们的起始值等于V的当前值。如果是这样,我们只需增加一分钟,就可以让它进入下一次迭代。如果这一次迭代导致我们达到目标电荷,我们就会崩溃
请记住,当我们打印出答案时,我们希望将其转换回整数,所以请转换返回值
如果你有任何问题,请告诉我