質問: Javaで以下のような動作をするプログラムを作りたいです。どうすればいいでしょうか? ``` 0. ローマ字だけ -> trueを返す 1. ローマ字と英文が混ざってる -> falseを返す 2. 英文だけ -> falseを返す ``` ローマ字と英文の定義がわからないという意見があったのでそれに合わせて修正しますね。 ローマ字 日本式ローマ字のアルファベットの文字列 例 ``` Haro-wa-rudo zyabayorisinohougasuki sonnnakotoyorioudonntabetai ``` 英文 ローマ字以外のアルファベットの文字列
回答: まず、目的は何かによってどこまで厳密に考える必要があるか決める必要があります。 ちょっと思いつかないのですが、英語にもローマ字にも判定できる短文があってもおかしくないと思いませんか? 名詞だけでなく、動詞においても英語化された日本語がありますし、その多くがローマ字になっています。 簡単な方法から、思いつきでやり方を書いてみます。 1.すべての文字列がローマ字表で置き換えられる→true 2.ローマ字変換されていても、指定割合が英語辞書に登録されている→false 3.日本語として考えて指定割合が日本語辞書に登録されている→true 4.文法上、英語として解釈出来る 5.文法上、日本語として解釈できる と言ったところでしょうか、英語のほうが単語の変化が単純なので辞書検索は簡単そうですね。