2016-04-16 12 views
1

文字列の長さを "*"記号として返すのは難しいです。メソッドNoDisclosureはInterfaceにあり、TopClearanceはClearanceのサブクラスです。gettermethod getSecret()はsuperClass - > Clearanceにあり、すでに継承しています。シンプルなjava、文字列の長さ

私は文字列を返すことはStr.lengthを(使用していることを知っている)が、私はちょうどの長さを取り、ここで「*」

に変換する方法がわからない質問の一部です。

TopClearanceのnoDisclosureメソッドは、Clearanceの秘密である限り、シンボル '*'のシーケンスを返します。 したがって、例えばtopがTopClearanceのインスタンスの名前で、top.getSecret()が "magic"の場合 "magic"の長さが5であるため、top.noDisclosure()は "*****"を返します。 TopClearanceのメソッドパスポートは、Clearanceの名前の最初の2文字を返します。 したがって、たとえばtopがTopClearanceのインスタンスの名前で、top.getName()が「Mark」の場合、 top.passport()は「Ma」を返します。

String shortenedName = name.substring(0, 2); 

答えて

0

あなたはnoDisclosureためのループのために言葉をマスクすることができます既知の単語の長さを使用する新しい文字列:

String maskedWord = new String(new char[word.length()]).replace("\0", "*"); 
+0

これはジョブを完了します(そして最も論理的かもしれませんが)。これはやりたくありません。また、このようにすれば、少なくともString concatではなくStringBuilderを使用してください。 –

+0

私はStringsをどのように使っていたのか分かりませんでしたので、もっと簡単な解決法を提供し、他の人にも他のアイデアを提供させると思いました。 – Logan

+0

私はプログラミング面で進んでいないので、この方法は論理的だと思います。ありがとう! – eggfriedrice

-1

あなたが作成することができます。

String maskedWord = ""; 
for(int i = 0; i < word.length(); i++) { 
    maskedWord += "*"; 
} 

passportについて、あなたは名前の一部を取得するためにsubstringメソッドを使用することができます。

4

Yo正規表現を使用するString.replaceAll()メソッドを使用できます。

text.replaceAll(".", "*");