使用java

时间:2015-10-25 01:19:35

标签: java validation math calculator

首先,我承认这是我的任务。但是,我在我的智慧结束。我尝试需要验证用户输入正确的表达式(即:“7 + 5;”),我设法用拆分方法做,但我被告知我不能这样做。我确信这个问题有一个简单的解决方案,但我没有看到它。

代码相当冗长所以我不会发布它,但如果需要的话我会发布。

谢谢!

编辑回答问题:我在jGrasp写作,所以他们可以做任何键盘上的事情。我被告知“找到一种创造性的方式来使用子串”,我不知道这意味着什么。表达式需要是数字空间操作数空格数分号

这是我验证的内容......我在表达式

中为每个字符使用数组
    public static boolean validFormat(String expr)
    {
  String tokens[] = expr.substring()
  if (tokens.length == 3)
  {
     if (tokens[0].equals(""))
     {
        return false;
     }
     if (tokens[1].equals(""))
     {
        return false;
     }
     if (tokens[2].length < 2)
     {
        return false;
     }
         else
         {
         if (tokens[2].endwith(";"));
         {
           return false;
         }
         else
           {
           return true;
           }
         }
     }
    return false;

}

我在调用子字符串时遇到错误,以及“else if if”错误

2 个答案:

答案 0 :(得分:0)

首先,您应该使用if语句将输入限制为6个字符。然后使用CharAt()方法返回每个字符以检查条件。

答案 1 :(得分:0)

  

我被告知&#34;找到一种创造性的方式来使用子串&#34;。

如上所述,请尝试使用String.substring()

public class Demo {

    public static void main (String[] args) {
      String exp = "7 + 5;";
      System.out.printf("%s\t%b%n", exp, validate(exp));
      exp = "4 + d;";
      System.out.printf("%s\t%b%n", exp, validate(exp));
    }

    public static boolean validate(String exp) {
      String n1 = exp.substring(0,1);//operand
      String n2 = exp.substring(4,5);//operand
      String co = exp.substring(5);//semicolon
      String s1 = exp.substring(1,2);//space
      String s2 = exp.substring(3,4);//space
      String op = exp.substring(2,3);//operator
      return num(n1) && num(n2) && semi(co) && space(s1) && space(s2) && opt(op);
    }

    public static boolean num(String n) {
      return "0123456789".contains(n);
    }

    public static boolean semi(String s) {
      return ";".equals(s);
    }

    public static boolean space(String s) {
      return " ".equals(s);
    }

    public static boolean opt(String s) {
      return "-+*%/^".contains(s);
    }
}

此解决方案使用RegExp:

public class Demo {

    public static void main (String[] args) {
      String exp = "7 + 5;";
      System.out.printf("%s\t%b%n", exp, validate(exp));
      exp = "4 + d;";
      System.out.printf("%s\t%b%n", exp, validate(exp));
    }

    public static boolean validate(String exp) {
      return exp.matches("\\d\\s(\\+|\\-|\\*|\\/|\\^|\\%)\\s\\d\\;");
    }
}