2016-07-19 2 views
0

プレーヤーの名前、ランク、スキルを格納するランダムアクセスファイルを作成していますが、26より長いプレーヤー名を入力すると26で切り捨てられます。 26より短いです、私は空白でそれを埋めたいです。長さが十分でない場合、文字列を空白で埋め込むにはどうすればいいですか?

最初の26文字だけが選択されていることを確認するためにsubStringを見つけましたが、値を入力しなかった場合、空白が26個あることを確認するために何を提案するのだろうかと思いました。これは私のコードの単なるスニペットです。もしあなたが私がもっと追加したいなら、私はそうします。

public static String PlayerNameMethod (RandomAccessFile store){ 
    try{ 
     String PlayerName = input.next(); 
     store.writeUTF(PlayerName); 
     if (PlayerName.length()> 26){ 
      PlayerName.substring(0,26); 
      System.out.print("The Player Name is" + PlayerName); 
     } 

     if (PlayerName.length()< 26){ 
      //PART I CANT FIGURE OUT 
     } 

答えて

0

長さの文字列を作成= 26-PlayerName.length()各文字として、空白とプレイヤー名に付加して

2

あなたがそれを行うことができる多くの方法があります - 最も簡単な1文字列が十分に長くなるまでスペースを追加するループです。あなたのコードの残りの部分でいくつかの問題を持っている

PlayerName = String.format("%-26s", PlayerName); 

注:非常に短いコードを持っており、機能に組み込まれて使用し

しかし、一つの方法は、String.format機能です。行:

PlayerName.substring(0,26); 

は何もしません。文字列は不変です。つまり、文字列を変更する関数は常に新しい文字列を返します。元の文字列は変更されません。

だから、その行は次のようになります。

PlayerName = PlayerName.substring(0,26); 
1

@Erwinが述べた答えは最も簡潔です。 しかし、それを自分でやりたいのなら、これはあなたがする必要があるものです。

if (PlayerName.length() < 26) 
    { 
     StringBuilder paddedName = new StringBuilder(PlayerName); 
     for (int i = 0; i < 26 - PlayerName.length(); i++) 
     { 
      paddedName.append(" "); 
     } 
     PlayerName = paddedName.toString(); 
    } 

注:Javaの規則では、小文字で始まる変数名を指定する必要があります。あなたの場合playerName

+0

OPは空白をゼロにしたくありません。 'for'ループや余分な変数の代わりに、' paddedName.length()<26)paddedName.append( ''); ' –

+0

@ dave_thompson_085のように、ゼロを置き換えようとしました。 –

関連する問題