Java字符在数组中计数

时间:2012-10-05 06:22:53

标签: java arrays

我试图解决的另一个问题(注意这不是作业,而是突然出现的问题),我正在努力提高我在Java中解决问题的能力。我想显示这个:

学生证#
Carol McKane 920 11
James Eriol 154 10
Elainee Black 462 12

我想要做的是在第3列,显示字符数而不计算空格。给我一些提示来做到这一点。或者指出我的Java强大的API,因为我还不熟悉Java的字符串API。感谢。

4 个答案:

答案 0 :(得分:2)

考虑解决问题并将答案呈现为两个截然不同的步骤。我不会帮助你在表格中的演示文稿,但要计算字符串中的字符数(没有空格),你可以使用它:

String name = "Carol McKane";
int numberOfCharacters = name.replaceAll("\\s", "").length();

正则表达式\\s匹配name字符串中的所有空格字符,并将其替换为"",或者不替换它们。

答案 1 :(得分:2)

听起来你只想要这样的东西:

public static int countNonSpaces(String text) {
    int count = 0;
    for (int i = 0; i < text.length(); i++) {
        if (text.charAt(i) != ' ') {
            count++;
        }
    }
    return count;
}

您可能希望将其修改为使用Character.isWhitespace,而不是仅检查' '。另请注意,这会将基本多语言平面之外的对计为两个字符。这对您来说是否有问题取决于您的使用案例......

答案 2 :(得分:0)

可能是最短最简单的方式:

    String[][] students = { { "Carol McKane", "James Eriol", "Elainee Black" }, { "920", "154", "462" } };


    for (int i = 0 ; i < students[0].length; i++) {
        System.out.println(students[0][i] + "\t" + students[1][i] + "\t" + students[0][i].replace( " ", "" ).length() );
    }

replace(),替换你的字符串的每个子字符串(“”),并从返回的结果中删除它,从这个时间字符串,没有空格,你可以通过调用它的长度()获得长度... 字符串名称将保持不变。

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

欢呼声

答案 3 :(得分:0)

要详细了解相关信息,请观看StringCharacter

的API文档

这里有一些例子:

// variation 1
int count1 = 0;
for (char character : text.toCharArray()) {
    if (Character.isLetter(character)) {
        count1++;
    }
}

这使用了“for”指令的特殊短语。以下是更好理解的长篇形式:

// variation 2
int count2 = 0;
for (int i = 0; i < text.length(); i++) {
    char character = text.charAt(i);
    if (Character.isLetter(character)) {
        count2++;
    }
}
顺便说一句,通过替换方法删除空格对我来说不是一个好的编码风格,对理解字符串类的工作方式也没什么帮助。