0

私が解決しようとしているもう1つの問題(これは宿題ではなく、頭に浮かんだものです)、Javaでの問題解決スキルを向上させようとしています。これを表示したい:

学生ID番号CarolMcKane920
11
James Eriol 154 10
Elainee Black 462 12

3列目にスペースを数えずに文字数を表示したいです。これを行うためのヒントをいくつか教えてください。または、Javaの堅牢なAPIを指摘してください。これは、Javaの文字列APIにまだ慣れていないためです。ありがとう。

4

4 に答える 4

2

問題を解決し、答えを2つの非常に異なるステップとして提示することを考えてください。表での表示については説明しませんが、文字列(スペースなし)の文字数を数えるには、次のように使用できます。

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

正規表現は、文字列\\s内のすべての空白文字と一致し、それらを、または何もname置き換えません。""

于 2012-10-05T06:27:20.487 に答える
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文字としてカウントされることに注意してください。それがあなたにとって問題になるかどうかは、あなたのユースケースに依存します...

于 2012-10-05T06:27:27.177 に答える
0

詳細については、文字列文字のAPIドキュメントをご覧ください。

ここにいくつかの例があります:

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

これは、「for」命令の特別なshortfromを使用します。理解を深めるための長い形式は次のとおりです。

// variation 2
int count2 = 0;
for (int i = 0; i < text.length(); i++) {
    char character = text.charAt(i);
    if (Character.isLetter(character)) {
        count2++;
    }
}

ところで、replaceメソッドを介して空白を削除することは、私にとって良いコーディングスタイルではなく、文字列クラスがどのように機能するかを理解するのにあまり役立ちません。

于 2012-10-05T07:12:41.353 に答える
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()、文字列の各サブ文字列( "")を置き換え、返された結果から削除します。この一時文字列から、スペースなしで、length()を呼び出すことで長さを取得できます...文字列名は残ります変更なし。

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

乾杯

于 2012-10-05T06:27:48.873 に答える