java字符串数组中的空字符串
我想计算单词中字母的数量,从1到100。例如
如果数字1到5是用文字写出来的:一,二,三,四,五
然后总共使用了3+3+5+4+4=19个字母
为此我编写了以下代码
public static int helper(int a){
String ones[]= {"","one","two","three","four","five","six","seven","eight","nine","ten",
"eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen"
,"eighteen","nineteen"};
String tens[]= {"","","twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
if(a<20){
return ones[a].length();
}
else
return tens[a/10].length();
}
public static int countLetters(int a){
if(a==100)
return 10;
else if(a<20){
return helper(a);
}
else{
return helper((a/10)*10)+ helper(a%10);
}
}
主要功能如下
public static void main(String[] args) {
// TODO Auto-generated method stub
int result=0;
for(int i=1;i<=100;i++){
result+=countLetters(i);
}
System.out.println(result);
}
这个问题的正确答案是864
。在String ones[]
数组中,我使用了标点符号" "
,它们之间有空格。返回的result
是872
,这是不正确的,但在删除它们之间的空格后,返回的答案是864
。我使用了没有空格的""
。我想知道为什么会这样
Is there any logical aspect with respect to strings or string arrays for this problem ?
# 1 楼答案
当
a
的值为20时,这行代码计算什么return helper((a / 10) * 10) + helper(a % 10);
你的答案就在这个计算中。所以,让我们来解决这个问题
return helper((20 / 10) * 10) + helper(20 % 10);
这就变成了:
return helper(20) + helper(0);
在对
helper(0)
的调用中,您的方法执行以下特定条件:因此,虽然从1开始循环的迭代,但并不意味着数组
ones
的索引0没有被遍历