文字列ユーザー入力の検証

ユーザーが文字列のどこかで小数点を提供していることを確認するテストを作成するには?

1
-1文の構成が不十分で細部が不足しているため。また、これは宿題の問題ですか?
追加された 著者 Ryan Amos,
@camickr OPが私たちに彼らの試行の一例と彼らがどこにいらっしゃったのかを示してくれたことは素晴らしいことでした。そうすれば、OPが最大の助けを得ることができます。
追加された 著者 Ryan Amos,
@camickrこれは私が今までに落としたことが初めてだった。私はできる限り明確にしようとした。
追加された 著者 Ryan Amos,
コメントを付けずに質問を下降(または閉じるために投票)しても、ポスターが質問を改善するのに役立つわけではありません。
追加された 著者 camickr,
@ RyanAmosは、元のコメントでそれを再度指し示します。私たちは読者ではなく、あなたがダウンボートするときにあなたが何を考えているのか分からない。そのポスターは最初の質問であり、詳細なコメントがなければ改善することはできません。
追加された 著者 camickr,
@ RyanAmos、質問は簡単で簡単です。あなたはどんな詳細を期待していますか?私たちは質問の現在の言葉に基づいて2つの大きな答えを持っています。
追加された 著者 camickr,

4 答え

indexOf( "。")メソッドを使用して、文字列に小数点が含まれているかどうかを確認します。 例えば:

String str = "232.3";
if(str.indexOf(".") != -1)
{
  //Contains a decimal point
}
else {
  //Does not
}
5
追加された
入力が文字列に存在しない場合、メソッドは-1を返します。 nullがオプションでない場合、-1は「結果なし」の標準です。
追加された 著者 Ryan Amos,
そうですね、またはそれぞれにaを使って独自の検索ループを書くことができます。自分の方法が良いとわからない限り、自分の方法を使うのがベストです。
追加された 著者 Ryan Amos,
@camickrこれほどシンプルなものは、必ずしも悪いとは思わない。あなたは効率を最大にしています。このような宿題には問題はありませんが、String.indexOf()がどのようなメソッドを使って情報を取得するかはわかりません。期待どおりのループを使用している可能性があります。あるいは、必要のない余分なことをしている可能性があります。 String.indexOf()は整数ではなくブール値で返答するので、必要以上のものをチェックしています。これは単なる何かの存在の検証です。
追加された 著者 Ryan Amos,
@camickr私は初心者が実際には何度か練習のために車輪を再開発すべきだとも思っています。ホイールを再開発することから学ぶべきことがたくさんあるので、プログラミングクラスはリンクリスト、ハッシュテーブルなどのようなデータ構造を作成することができます。
追加された 著者 Ryan Amos,
@ RyanAmos、あなた自身の回答提案をあなたのループソリューションに投稿してください。あなたは答えの概念を完全に変更しているので、この提案にはコメントは必要ありません。ここでの答えは、「APIの最初のチェックアウト方法」です。あなたの提案は "最初からループするコードを書く"です。
追加された 著者 camickr,
APIを読んでください。 indexOf()メソッドがどのように機能し、メソッドから返された値が何を意味するかについて説明します。
追加された 著者 camickr,
@ RyanAmos、それはあなた自身のループを書く恐ろしい示唆です。 APIに存在するメソッドを使用し、ホイールを再起動しないでください。
追加された 著者 camickr,
+1、ちょうど私が提案したもの。
追加された 著者 camickr,
@ RyanAmos、 "これ以上必要なものをチェックしています" - String.indexOf の実装を見てきましたか?単一の char (そしてその)で表現できる文字の場合、このメソッドはちょうど2ビットの追加作業を行い、コード> <比較。基本的に余分な仕事はゼロ。ブール値ではなく、インデックスを返す理由は、インデックスがループからすぐに利用できるということです。
追加された 著者 yshavit,
ちょっと不思議、なぜ-1?
追加された 著者 Sophie,
明日の最初のコースのJava試験のために勉強する:P
追加された 著者 Sophie,
!= -1、なぜそこに-1ですか?
追加された 著者 Sophie,
悪いプログラマである - 私はパラメータを知る必要があるときにAPIを読むべきです。みんなありがとう :)
追加された 著者 Sophie,

が含まれています

public boolean contains(CharSequence s)
3
追加された
+1、あなたが小数点がどこにあるか気にしない場合、面白いアプローチ。
追加された 著者 camickr,
String userInput="123.23";

if(userInput!=null && unserInput.indexOf('.')!=-1)
{
   //contains decimal point
}
2
追加された

これを行う簡単な方法は、for each loop

char desiredCharacter = '.';
String myStr = getString(); //get a string somehow
boolean b = false;
for(char c : myStr.toCharArray())
    if(c == desiredCharacter){
        b = true;
        break;
    }
if(b){
    //Character is in the string
}
else{
    //Character is not in the string
}

このように、外部の方法によって引き起こされる可能性のある非効率性に対処する必要はありません。さらに、独自のメソッドを書く練習は、開発には良いものです。私たちの頭脳が元気にならないようにしたいのですか?

0
追加された
はい、Reflectionを使用してStringへの内部アクセスを取得できるとします。私はそれがはるかに速くなるとは思わない。 charAt()で個々の文字を繰り返し処理する方が高速かもしれないと思います。また、toCharArray()はSystem.arrayCopy()を使用します。これはネイティブであり、効率を大幅に改善します。
追加された 著者 Ryan Amos,
あなたが非効率性を心配しているなら、行く方法ではありません。 toCharArray()は、内部の char [] をコピーします(Stringの不変性を維持するために)。
追加された 著者 yshavit,
アレイをコピーした後、反復処理(あなたのアプローチ)は、元のもの(String.charAtの機能)を単に反復するよりも速くなることはありません。リフレクションを追加すると、コストの一部が奪われる可能性があります(ただし、最適化されていない可能性があります)が、今や再発明する必要のないホイールを再発明する方法はありません。 「コーディングの練習としてあなた自身で書くことは良いことですが」と言うのは一つのことですが、それを行う他の理由はまったくありません。
追加された 著者 yshavit,