【发布时间】:2017-05-28 00:31:21
【问题描述】:
我在下面有这段代码,我的目标是计算字符串"abcdee" 中有多少个字母“e”。
class Sample1 {
String tiles;
public Sample1 (String tiles) {
this.tiles = tiles;
}
public int countLetter(char letter) {
int a = 0;
for (char x : tiles.toCharArray()) {
int m = 0;
if (tiles.indexOf(letter) != -1) {
m = 1;
}
a += m;
System.out.println("Letter count is " + m);
}
return a;
}
}
public class Sample {
public static void main(String[] args) {
Sample1 s = new Sample1("abcdee");
s.countLetter('e');
}
}
我希望代码会给我这个结果:
Letter count is 0
Letter count is 0
Letter count is 0
Letter count is 0
Letter count is 1
Letter count is 1
然后可能将所有的 1 相加得到 2。但是当我运行它时,我得到的只是这个:
Letter count is 1
Letter count is 1
Letter count is 1
Letter count is 1
Letter count is 1
Letter count is 1
希望你能帮帮我。
【问题讨论】:
-
你是要打印出 a 的值而不是 m 的值吗?
-
使用流的单线:
return tiles.chars().filter(c -> c == letter).count(). -
@beat 你的意思是
Arrays.toStream(tiles.toCharArray()).filter(c -> c == letter).count() -
如果
letter存在于titles中,tiles.indexOf(letter)将输出有效的非负索引。在您的代码中,在循环执行期间两者都没有改变。abcdee确实包含e因此它的打印是这样的 -
@JigarJoshi 不,我的意思是
CharSequence#chars(),它直接给你一个字符流。