所以这是我的解决方案代码:
public int count_two_char(String s, char c, char d){
int count = 0;
int count1 = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == c) {
count = count + 1;
}
for (int i1 = 0; i1 < s.length(); i1++) {
if (s.charAt(i1) == d) {
count1 = count1 + 1;
}
}
}
return count + count1;
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试代码:
@Test
public void tests3() {
code.Solution s = new code.Solution();
String input = "llss";
int expected = 4;
char c ='l';
char d ='s';
int actual = s.count_two_char(input, c, d);
assertTrue("Expected was" +expected+"but the actual was" +actual , expected == actual);
}
Run Code Online (Sandbox Code Playgroud)
但是当我测试它时.它显示一个错误,预计是4但实际是10.为什么?? 我现在很困惑.
因为您的大括号没有缩进,所以看起来您有2个独立的for循环.但是在将它们排好后更好:
for(int i=0; i<s.length(); i++){
if(s.charAt(i) == c){
count = count + 1;
}
for(int i1=0; i1<s.length(); i1++){
if(s.charAt(i1) == d){
count1 = count1 + 1;
}
}
}
Run Code Online (Sandbox Code Playgroud)
您可以看到第二个for循环嵌套在第一个for循环中,因此您count1将高于预期.
在for循环之间移动最后一个括号,它们将被取消.这应该减少返回的计数,以便您的测试通过.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |