2017-05-04 9 views
1

文字列にユーザー入力を受け取り、 "operand space operator space operand"または "2 + 5 * 7^2"の形式であることを検証する必要があります。これはjavaにあります。私は何時間も研究しており、正規表現とループを試しています。私は文字列の検証方法を理解できません。以下は私が試したコードの一部です。この例では、文字列をcharsに変換しました。Javaが文字列の式を検証する

 for(int i = 0; i < s.length(); i++){ 
      char x = s.charAt(i); 
      if(!(Character.isDigit(x) || x == '/' || x == '*' || 
       x == '+'|| x== '-' || x=='^' || x == '\n')) 
        throw new InValidCharacterExpression("Invalid expression. Please try again."); 
    } 
    } 
+2

彼らはコンパです私が何かを紛失していない限り、文字列ではない。 – Carcigenicate

+2

@tnw、これは文字を比較しています。私は答えはとにかく正規表現を含むと思います。 –

+0

@SteveSmith私の間違い。閉会投票を終了しました。 – tnw

答えて

0

+のような演算子を探しについてどのように - * /そして、空間の各部分のカウント量に演算子の前後に二つの部分に文字列を分割し、結果をトリミングして

0

を数値に変換し、私は」

012:あなたがスペースで演算子とオペランドを分離したいかどうかは任意である

public class ValidateExp { 
    public static boolean validate(String s) { 
     Pattern p = Pattern.compile("^(-? ?\\d*[\\.,]?\\d+ ?[\\/\\+\\-\\*\\-\\^])+(-? ?\\d*[\\.,]?\\d+)$"); 
     Matcher m = p.matcher(s); 

     if(m.find()) 
      return true; 

     return false; 
    } 
} 

あなたが完全に一致する探しているものを表現についてよく分からないが、ここで(正規表現を使用して)最初です

  • 10+10 true
  • 10 + 10 true
  • 10+ 10 true
  • 10 + false
  • 10 *+ 10 false
  • 1 * 1^10 true
  • 1 * 1^10 true
+0

式は "10 * 2 - 15/3^2"のようになります – user7963685

+0

あなたのために私の答えが更新されました。 – eli

関連する問題