我想自动化android gradle版本化我的要求是
验证码版本名称
所以我在java应用程序中运行了代码
代码:
public static void main(String[] args) {
int fileVersionCode = 1;
String fileVersionName;
for (int i = 0; i < 200; i++) {
if (fileVersionCode <= 10) {
fileVersionName = "1." + (fileVersionCode - 1);
} else if(fileVersionCode>=20 && fileVersionCode%10 ==0) {
fileVersionName = ( (fileVersionCode / 10)) + ".9";
}else {
fileVersionName = (1 + (fileVersionCode / 10)) + "." +( (fileVersionCode % 10)-1);
}
System.out.println(fileVersionCode+" "+fileVersionName);
fileVersionCode++;
}
}
我的代码按预期工作,但是在gradle中使用相同的代码
task firstTask {
doFirst {
int fileVersionCode = 1;
String fileVersionName;
for (int i = 0; i < 200; i++) {
if (fileVersionCode <= 10) {
fileVersionName = "1." + (fileVersionCode - 1);
} else if(fileVersionCode>=20 && fileVersionCode%10 ==0) {
fileVersionName = ( (fileVersionCode / 10)) + ".9";
}else {
fileVersionName = (1 + (fileVersionCode / 10)) + "." +( (fileVersionCode % 10)-1);
}
System.out.println(fileVersionCode+" "+fileVersionName);
fileVersionCode++;
}
}
doLast{
// println 'firstTask doLast'
}
}
运行:&gt; gradlew firstTask
答案 0 :(得分:3)
在groovy中,如果操作数的类型为BigDecimal
,则除法会产生Integer
,而在Java中,它们的类型为int
。
当fileVersionCode
为11
时,结果为:
(fileVersionCode / 10)
转换为Java中的1
,但转换为Groovy中的1.1
。为了解决这个问题,只需添加一个(int)
强制转换来修剪不必要的小数部分。