计数字符串中的字符不适用于制表符 ('\t')。我使用错误的方法吗?
Counting chars in String doesn't work with tabs ('\t'). Am I using wrong methods?
我想计算字符串中的每个字符。每个字符向计数器加 1,制表符应加 4。
我的代码是:
int counter = 0;
for(char c : myString.toCharArray()) {
if("\t".equals(""+c)) {
counter = counter + 4;
} else {
counter++;
}
}
我在文本编辑器中制作了很多不同的行,并将选项卡 space 设置为 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
我的代码准确计算 'Line 12' 的 121 个字符和 'Line 13' 的 120 个字符。
'Line 14' 为 120 个字符,'Line 15' 为 121 个字符。我不知道为什么。换行符被忽略。
对于简单的字符串
运行很好
package test;
public class Test {
public static void main(String[] args) {
int counter = 0;
String myString = "aghfhg\n \n";
for (char c : myString.toCharArray()) {
if ("\t".equals("" + c)) {
counter = counter + 4;
} else {
counter++;
}
}
System.out.println(counter); // output is 13 including 1 space , 1 tab and 2 line characters
}
}
请提供您的字符串
好吧,我复制了你的代码并执行了一次,我没有发现任何错误。
我尝试了以下代码:-
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);
}
}
而且,我每次都收到正确的输出。
SAMPLE OUTPUT RECEIVED :-
Ram is/t // Comment---> /t represents tab-hit after "is" word
R
a
m
i
s
Counter=10
所以,对我来说,它的评估是正确的。请检查您的输入(line-feeds/carriage-returns 是否也被计算在内)。祝你好运。
我想计算字符串中的每个字符。每个字符向计数器加 1,制表符应加 4。
我的代码是:
int counter = 0;
for(char c : myString.toCharArray()) {
if("\t".equals(""+c)) {
counter = counter + 4;
} else {
counter++;
}
}
我在文本编辑器中制作了很多不同的行,并将选项卡 space 设置为 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
我的代码准确计算 'Line 12' 的 121 个字符和 'Line 13' 的 120 个字符。 'Line 14' 为 120 个字符,'Line 15' 为 121 个字符。我不知道为什么。换行符被忽略。
对于简单的字符串
运行很好
package test;
public class Test {
public static void main(String[] args) {
int counter = 0;
String myString = "aghfhg\n \n";
for (char c : myString.toCharArray()) {
if ("\t".equals("" + c)) {
counter = counter + 4;
} else {
counter++;
}
}
System.out.println(counter); // output is 13 including 1 space , 1 tab and 2 line characters
}
}
请提供您的字符串
好吧,我复制了你的代码并执行了一次,我没有发现任何错误。
我尝试了以下代码:-
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);
}
}
而且,我每次都收到正确的输出。
SAMPLE OUTPUT RECEIVED :-
Ram is/t // Comment---> /t represents tab-hit after "is" word
R
a
m
i
s
Counter=10
所以,对我来说,它的评估是正确的。请检查您的输入(line-feeds/carriage-returns 是否也被计算在内)。祝你好运。