2016-06-21 7 views
0

こんにちはを削除するとき:エラーメッセージ文であればやって、私の割り当ての質問のために空白に

名前フィールドのために渡されたパラメータが、 nullであってはならないと、空の文字列のみ の構成文字列であってはなりません空白。パラメータとして渡された引数が 3の場合、nullまたは空白文字列のいずれかにフィールドを設定する DEFAULT_POOL_NAMEそれ以外の場合は、値 を正しくフォーマットしてください(空白を削除し、最初の文字を大文字にして、残りを小文字に設定してください)それをインスタンス変数 に格納する前に。ここで

は私のコードです:

public Pool(String newName, double newVolumeLitres, double newTemperatureCelsius, double newPH, double newNutrientCoefficient) { 
    if (newName != null && newName.trim().length() > 0) { 
    name = formatNameTitleCase(newName.trim()); 
    } else { 
    name = DEFAULT_POOL_NAME; 
    } 
} 

私はそうのように、最初の文字を大文字部分文字列を取り、大文字に設定するには

cannot find symbol - method formatNameTitleCase(java.lang.string) 
+0

残念ながら悪いペースト。 – kurt

+0

コードの書式を学ぶ – Li357

+0

publicプール(newName!= null && newName.trim().Length()> 0){ name = formatNameTitleCase(newName.trim()); } else { name = DEFAULT_POOL_NAME; } – kurt

答えて

0

を示すエラーメッセージを取得しています:

somestring.substring(0, 1).toUpperCase() + somestring.substring(1); 

あなたの場合は:

String trimmed = newName.trim(); 

name = trimmed.substring(0, 1).toUpperCase() + trimmed.substring(1); 

substring()は、文字列のある特定の部分を取り、それをキャプチャ(私はnameがすでに初期化されていると仮定しています)。 substring(0, 1)は、単語の最初の文字を取得し、toUpperCase()で大文字にします。 substring(1)は最初の文字の残りの文字列を取り、それを大文字と連結して次の出力を生成します。

"examplestring" 

"Examplestring" 

から、私はまた、残りは小文字であることを余分に確認するためにtoLowerCase()を利用をお勧めします。最後に、実際に文字列インデックスが存在することを確認するためにtry/catchを実行します。 「フェイルセーフ」をされ、最終的なコード:

String trimmed = newName.trim(); 
try { 
    name = trimmed.substring(0, 1).toUpperCase() + trimmed.substring(1).toLowerCase(); 
} catch(StringIndexOutOfBoundsException e) { 
    e.printStrackTrace(); 
    System.out.println("String was not at least one character!"); 
} 

trim()のみ末尾の空白を取り除くので、そのようreplaceAll()メソッドを使用します:

str.replaceAll("\\s+", ""); 

は、これは(改行のようなものを含む、すべての空白を置き換える\ n)。これは正規表現(正規表現)を使用してすべての空白にマッチし、何も置き換えません。

try { 
    name = newName.substring(0, 1).toUpperCase() + newName.substring(1).toLowerCase(); 
} catch(StringIndexOutOfBoundsException e) { 
    e.printStrackTrace(); 
    System.out.println("String was not at least one character!"); 
} 
name.replaceAll("\\s+", ""); 

は、完全なポストを読んでみてください。

TL DR

はここすべての空白を削除し、最初の文字を大文字のコードです。

アプリケーション

public String formatNameTitleCase(String oldName) { 
    try { 
     name = oldName.substring(0, 1).toUpperCase() + oldName.substring(1).toLowerCase(); 
    } catch(StringIndexOutOfBoundsException e) { 
     e.printStrackTrace(); 
     System.out.println("String was not at least one character!"); 
     return "failed"; 
    } 
    name.replaceAll("\\s+", ""); 

    return name; 
} 
0

あなたは空白のケースをチェックするためにサードパーティのライブラリを使用することができます。 例: Apache common lang jarには、StringUtilsクラスがあります。 使用できます

StringUtils.isNotBlank(String);

+0

そのStringUtils.isNotBlank(newName); – kurt

+0

サードパーティ製のライブラリが不要 – Li357

+0

はい、あなたのケースでは、それはnewNameになります – Boola

0

あなたが望むものは次のとおりです。

public Pool(String newName, double newVolumeLitres, double newTemperatureCelsius, double newPH, double newNutrientCoefficient) { 
    //Removing White spaces 
    if(newName!=null) { 
     newName = newName.replaceAll(" ", ""); 
    } 
    //Check for empty and null 
    if(newName==null || newName.isEmpty()) { 
     newName=DEFAULT_POOL_NAME; 
    } 
    //Setting the first to uppercase and the rest to lower case 
    else { 
     newName = newName.substring(0, 1).toUpperCase() + newName.substring(1).toLowerCase(); 
    } 
} 
+0

ahmedありがとうございます。 – kurt

+0

文字列変数はあなたの文字列であれば何でもかまいません。 およびDEFAULT_POOL_NAMEは、設定したデフォルトの名前です。 –

+0

名前が "hello FROM HerE"の場合、出力はHellofromhereになります。name = nullまたは空白のみの場合、結果はDEFAULT_POOL_NAMEになります。 –

関連する問題