質問

だから私は:にJavaコードを書かなければなりません。

  • 入力を入力
  • タイトルケースの形式名
  • 入力第2名
  • タイトルケースの形式名
  • アルファベット順に表示します

    Java文字クラスには、islowercase()、isuppercase、tolowercase()、toutpercase()のメソッドがあることを知っています。文字列ごとの文字の確認に使用できます。最初の文字が小文字の場合は、それを大文字に変換し、それぞれの各文字について、文字が大文字の場合は小文字に変換します。

    問題は私が各手紙をチェックする方法ですか? どのような変数と文字列が含まれているべきですか? あなたは助けてもらえますか?

役に立ちましたか?

解決

文字列操作に対処するときにStringBuilderを使用する必要があります。このように、オブジェクトの数を削減します。

StringBuilder s1 = new StringBuilder("rohit");
StringBuilder s2 = new StringBuilder("jain");

s1.replace(0, s1.length(), s1.toString().toLowerCase());
s2.replace(0, s2.length(), s2.toString().toLowerCase());            

s1.setCharAt(0, Character.toTitleCase(s1.charAt(0)));
s2.setCharAt(0, Character.toTitleCase(s2.charAt(0)));

if (s1.toString().compareTo(s2.toString()) >= 0) {
    System.out.println(s2 + " " + s1);

} else {
    System.out.println(s1 + " " + s2);
}
.

他のヒント

最初の文字を大文字に変換してから、残りの文字列を小文字にします。

String name = "jOhN";
name = name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase(); 
System.out.println(name); // John
.

文字列クラスのみを使用して文字列を通過するには、文字列内の各文字を繰り返します。

String s = "tester";
int size = s.length(); // length() is the number of characters in the string
for( int i = 0; i < size;  i++) {
    // s.charAt(i) gets the character at the ith code point.
}
.

この質問答え:文字列を「変更する」方法 - できません。 StringBuilderクラスは、特定のインデックスで文字を編集するための便利な方法を提供します。

すべての名前が正しく大文字になっていることを確認したいように見えます。スペースが大文字になった後の文字列と文字。

リストをアルファベット順にするには、すべての入力名をArrayListまたは他のコレクションオブジェクトに格納して、コンパレータを実装し、それをCollections.Sort()に渡すコンパレータを作成します。同等のVSコンパレータの質問

これはそれを修正すべきです

List<String> nameList = new ArrayList<String>();
    nameList.add(titleCase("john smith"));
    nameList.add(titleCase("tom cruise"));
    nameList.add(titleCase("johnsmith"));
    Collections.sort(nameList);
    for (String name : nameList) {
        System.out.println("name=" + name);
    }

public static String titleCase(String realName) {
    String space = " ";
    String[] names = realName.split(space);
    StringBuilder b = new StringBuilder();
    for (String name : names) {
        if (name == null || name.isEmpty()) {
            b.append(space);
            continue;
        }
        b.append(name.substring(0, 1).toUpperCase())
                .append(name.substring(1).toLowerCase())
                .append(space);
    }
    return b.toString();
}
.

StringにはメソッドtoCharArray その文字の新しく割り当てられたchar[]を返します。Stringsは不変、アレイの要素を再割り当てすることができることを忘れないでください。

同様に、String は、新しく作成されたchar[]の文字を表すStringを取ります。

それでもこれらを組み合わせることは、Stringからchar[]に取得され、char[]を変更し、新しいStringに戻る方法があります。

これは任意の数の方法で達成することができます。そのほとんどは要件の詳細に戻ります。

しかし基本的な前提は同じです。Stringは不変(内容は変更できません)が、Stringの文字を抽出し、最初の文字を大文字に変換し、Stringアレイから新しいcharを再構成します。

すでに指摘されているように、これは相対的な単純です。

あなたがする必要があるかもしれない他のものは、単一のパスで複数の名前(最初、最後)を処理することです。繰り返しますが、これは比較的簡単です。困難な部分は、複数の条件で文字列を分割する必要があるかもしれません、それから正規表現に頼る必要があるかもしれません。

これは非常に簡単な例です。

String name = "this is a test";
String[] parts = name.split(" ");
StringBuilder sb = new StringBuilder(64);
for (String part : parts) {
    char[] chars = part.toLowerCase().toCharArray();
    chars[0] = Character.toUpperCase(chars[0]);

    sb.append(new String(chars)).append(" ");
}

name = sb.toString().trim();
System.out.println(name);
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top