gpt4 book ai didi

java - 发现如果 Minus 出现在被认为是负数的数字的开头

转载 作者:行者123 更新时间:2023-11-29 08:22:25 24 4
gpt4 key购买 nike

我正在制作一个 validator ...它将获取一个字符串并对其进行验证。我想做的是,如果减号在数字的开头,它被认为是真的。像 (-34+56) 和 (23*-43) 可以,但 (23+*23-) 不行。 .实际上它是一个计算器,所以它应该是一个适当的方程式

我尝试添加一条匹配的行 - 但它不起作用,也不明智。

这是我的验证方法

 public boolean validateInput(String input) {
if(input.contains(".")) {
return true;
}

Pattern pattern = Pattern.compile("[-]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
return true;
}

if((input.replaceAll("[^(]","" ).length() != input.replaceAll("[^)]", "").length()) || input.split("[^\\d]").length == 0 || input.length() == 0)
return false;

// [\d|-][(|)] [\d|)][(|\d]|[^\d|(][)|^\d]
// [\d][(]|[)][\d]|[^\d][)]|[(][^\d]

// String ope = "*\\/+^-";
//to check input like 9(, )9, *),(*..
pattern = Pattern.compile("(\\d\\()|(\\)\\d)|(\\([*\\/+^])|([*\\/+^]\\))");
matcher = pattern.matcher(input);
if (matcher.find()) {
return false;
}

//
pattern = pattern.compile("[^\\d|+*^()\\/]");
matcher = pattern.matcher(input);
if (matcher.find()) {
return false;
}


//to check if 2 consecutive operators are there...
pattern = pattern.compile("[*-+^\\/]{2}");
matcher = pattern.matcher(input);
if (matcher.find()) {
return false;
}



return true;
}

只是报错修复它的正则表达式应该是什么。

最佳答案

您的处理方式有误。

您需要一个能够理解数字表达式的解析器。正则表达式在这里不起作用。即使它会:看看你已经提出的正则表达式。您认为您会在 2 个月后,甚至 2 周后明白这一点吗?

因此,这里的真正答案是:忘掉正则表达式吧。学习如何解析这样的字符串。您可以从给出的答案开始 here寻求指导。

关于java - 发现如果 Minus 出现在被认为是负数的数字的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56512881/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com