2011-06-19 6 views
0

私は自由な時間に電卓プロジェクトに取り組んでいます。夏にJavaスキルを磨いていますが、私は困っています。これまでのところすべてがうまくいっていて、基本的には完了しています。私はちょうどいくつかの機能を追加しようとしています。私の計算機プロジェクトでどのようにオペランドと演算子を解析できますか?

私は私がその代わりに+-/、または*をクリックして、ユーザータイプnumber1(operator)number2を聞かせする方法秒数を、入力した後を入力するのは、それを設定する方法を把握しようとしています。私は、ほとんどの場合、演算子やキー文字列の前にすべてを取る方法と、その後に続くすべての文字列を別々の文字列にする方法を見つけようと考えています。次にそれらを解析して残りのコードに追加します。私は単に+の前にすべてを手に入れる方法を忘れていました。私はindexOf()と部分文字列を使用すると仮定しています。

+0

正規表現の使用を検討してください。 – SLaks

+1

はSLaksと正反対です。正規表現は、ユーザが入れ子になった括弧を持つ複雑な方程式を入力できるようにしたいときや、そうでないもの(本当にその可能性を考慮する必要があるとき)を特に解析するのにはあまり適していません。もう一度必要なのはパーサーです。あなたの方程式を解析するには、Javaの本来のJavaScript機能を使用することを検討してください。 –

+0

はかっこを処理しないでください。かっこなしでは、正規表現で十分でしょう。かっこでは文法になり、コンパイラが必要です。正規表現については、Matcherクラスを参照してください。 – SJuan76

答えて

2

はい、indexOfsubstringを使用します(これは括弧や入れ子を許可しない単純な計算機であると仮定します。複雑な場合はパーサーを使用します)。 endIndex排他なので、それは指定されたインデックスが含まれないことに注意してください

String substring(int startIndex) 
String substring(int startIndex, int endIndex) 

substringはあなたに有用であろう2つの形式があります。

+0

私はこのことについてどうすれば正確に行きますか?44 + 22という文字列を使って私に例を与えますか?どこにものを入れるのですか?今日何かの理由で本当に混乱している!ガーが助けてくれてありがとう! – CMOS

+0

したがって、 'indexOf(" + ")'は分割点を与えます。次に、 'substring(0、splitPoint)'と 'substring(splitPoint + 1)'を使って接頭辞と接尾辞をそれぞれ得ることができます。分割点が文字列の先頭または末尾にある場合は、特別な処理が必要であることに注意してください。 –

+0

AH大丈夫、完璧、それは働いている!百万をありがとう、私は15人の担当者がいたら私はあなたをアップボートするだろう! – CMOS

関連する問題