2016-02-08 7 views
5

私はJavaを使い慣れていないし、現在文章を含むテキストファイルの区切り文字に使用入力された引数を取るプログラムを書いている。提供された区切り文字に基づいてそのテキストファイル内に表示されます。私のMain.javaを実行している場合Java - 単語がユーザー入力の区切り文字で終わったら、do x

私は(-dは、区切り文字のためのフラグであり、次の文字が区切り文字である)ユーザーは次の操作を実行できるようにしたい:

javaのメイン-d!?。またはjava Main -d。?

または他の組み合わせ。私の質問は以下の通りです:

  1. 区切り文字を文字列または配列として保存する最も良い方法はありますか?
  2. 区切り記号を使用するようにプログラムに通知するにはどうすればよいですか?現在、私のプログラムは次のことをしています:

指定された区切り文字のいずれかで終わるかどうかを確認します。同様:

if (word.endsWith(delimitersStringorArray.contains()) { 
      sentenceCount++ 
    } 

私は、これは理にかなって願っていますし、必要であれば、私は任意の更なる明確化を提供することができます。

if (word.endsWith(".") || word.endsWith("!") || word.endsWith("?")) { 
      sentenceCount++ 
} 

しかし、その代わりに、私はそれが何かのようになりたいです。私は検索してみましたが、私の具体的な質問は見つかりませんでした。

ありがとうございます!

答えて

4

区切りa String配列。 これは、メソッドendsWithStringをパラメータとして使用するためです。

問題はクラスjava.lang.StringでendsWithの実際のバージョンが可能区切り文字の配列を受け入れていないが、次のように同じことを行うためのカスタムコードを作成することが可能であるということである。

public class StringUtility { 
    public static boolean endsWith(String str, String[] delimiters) { 
     for (String delimiter : delimiters) { 
      if (str.endsWith(delimiter)) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 

そして、これが渡された文字列は、複数の文字を区切り文字で終わるかどうかをチェックすることができますので、あなたが要求し、その後どのようなより一般的なコードであることを、次の

String[] delimiters = { ".", "!", "?" }; 
if (StringUtility.endsWith("yourWord", delimiters)) { 
    // Do something 
} 

ノートのようなコードを使用して、それを呼び出します。

+0

他の推奨コードよりもクリーナー+1 – Michael

+0

はいクリーンコードは常に必須です。読みやすくすることは、理解すること、テストを行うこと、進化させる方が簡単であることを意味します。 –

+0

これは素晴らしいことです。大変ありがとうございました! – Bryce

3

あなたの区切り文字はStringの最後の文字がこのリストに含まれている場合は、あなたがチェックし、Listに区切り文字を格納することができ、唯一の文字の長さである場合:おそらく最高のようにすることです

List<Character> delimiters = new ArrayList<Character>(); 
delimiters.add('.'); 
delimiters.add('!'); 
delimiters.add('?'); 

if(delimiters.contains(word.charAt(word.length() - 1))){ 

    sentenceCount++; 
} 
関連する問題