首先,我承认这是我的任务。但是,我在我的智慧结束。我尝试需要验证用户输入正确的表达式(即:“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”错误
答案 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\\;");
}
}