r3r*_*r57 5 java string count char
我想计算String中的每个char.每个字符都会向计数器添加1,标签应添加4.
我的代码是:
int counter = 0;
for(char c : myString.toCharArray()) {
if("\t".equals(""+c)) {
counter = counter + 4;
} else {
counter++;
}
}
Run Code Online (Sandbox Code Playgroud)
我在文本编辑器中创建了很多不同的行,并将制表符空间设置为4.带有字符和数字的行没有问题.一旦我在其间添加了几个选项卡,结果总是大于1.我的编辑器说该行长度为100个字符,但我的代码计数为101.如果一行中有2个或20个选项卡,则无关紧要.总计1太多了.
任何想法或更好的解决方案 也许使用过的方法会导致这种行为?
编辑: 我的测试线:
Line 12: 121 characters ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
Line 13: 120 characters dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
Line 14: 119 characters with tabs kkk
Line 15: 120 characters with tabs lkkk
Run Code Online (Sandbox Code Playgroud)
我的代码正好为"第12行"计算121个字符,为"第13行"计算120个字符.对于'第14行',它计数为120,对于'第15行'为121个字符.我不知道为什么.换行被忽略.
好吧,我复制了你的代码并执行了它,有一次我找不到任何错误。
我尝试了以下代码:-
import java.util.Scanner;
public class Alpha{
public static void main(String[] args){
int counter = 0;
Scanner s= new Scanner(System.in);
System.out.println("Enter a String :- ");
String myString=s.nextLine();
for(char c : myString.toCharArray()) {
System.out.println(c);
if("\t".equals(""+c)) {
counter = counter + 4;
}
else {
counter++;
}
}
System.out.println("Counter="+counter);
}
}
Run Code Online (Sandbox Code Playgroud)
而且,我每次都收到正确的输出。
SAMPLE OUTPUT RECEIVED :-
Ram is/t // Comment---> /t represents tab-hit after "is" word
R
a
m
i
s
Counter=10
Run Code Online (Sandbox Code Playgroud)
所以,对我来说,它的评估是正确的。请检查您的输入(是否也计算换行/回车)。祝你好运。