下面是我的代码:
import java.util.ArrayList;
public class SplitString
{
public static void main(String[] args)
{
String s = "80+5+3*(11%(3*2)-(5+1)+6)-(10+10)+(2*2)*5";
ArrayList<String> equation = new ArrayList<>();
String ns = "";
String b;
int nsi;
for(int c=0; c<s.length(); c++)
{
b = s.substring(c,c+1);
switch (b) {
case "0":
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
ns += b;
break;
case "+":
case "-":
case "*":
case "/":
case "%":
case "(":
case ")":
nsi = Integer.parseInt(ns);
equation.add(Integer.toString(nsi));
equation.add(b);
ns = "";
break;
}
for(int i=0; i<equation.size(); i++)
{
System.out.print(equation.get(i));
}
}
}
}
Exception in thread "main" java.lang.NumberFormatException: For input string: "" 80+80+80+5+80+5+80+5+3* at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:504) at java.lang.Integer.parseInt(Integer.java:527) at stringequationfull.StringEquationFull.main(StringEquationFull.java:42) Java Result: 1
您试图将空字符串解析为int;因此出现了例外。您处理运算符的逻辑是错误的。您的代码假定运算符之间总是有一个数字,但如果您查看您的等式,显然情况并非如此。(看看括号的出现。)引发异常是因为,正如消息所述,ns
是空字符串。
您将需要开发一个更通用的解析逻辑。在web上搜索“解析方程Java”,以获得许多如何做到这一点的示例。如果你只是想要计算方程的能力,看一下这个线程或这个。
我有一个逗号分层的字符串,当调用时,它返回大约60的数组大小。在特定的用例中,我只需要从数组中返回第二个值的值。例如,
如何将过滤器列表拆分为单个过滤器元件?split2String在线程“main”java.util.regex中导致:异常。PatternSyntaxException:索引10或(|和)附近的未闭合组(
我有一个字符串列表的可能组列表。每个字符串由几个单词组成,这些单词是字符串元素。我想根据这些元素对字符串进行分组。 每个组都基于一个公共单词:组中的所有字符串都必须包含该单词——尽管我不要求所有包含该单词的字符串都在同一组中。包含N个单词的字符串可以属于N个不同的组中的任何一个。每个字符串只能在一个组中。每个组必须至少有两个字符串。 目标:形成组以最大化组中字符串的数量(最小化“孤立”字符串)。
问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数
问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是:
我是 Perl 的新手,但根据我阅读的文档,看起来 Perl 中的 split 函数要求正则表达式模式而不是字符串分隔符作为第一个参数,但我发现使用 之类的东西仍然可以正确拆分字符串。 基于此,我尝试使用可变分隔符(例如。< code>print (split($var,$ string))[0] where < code > $ var = ' ' )并发现它不起作用。我做错了什么? 谢谢! 编