Java 长度未知时将字符串转换为整数
在尝试将多项式的常量项存储为整数时,我遇到了一个解析问题,因为在最简单的情况下,它们可能是1-3位长,而在将方程保存为字符串时,我很难从alpha值和符号解析出整数 我试过创造一些类似的东西Java 长度未知时将字符串转换为整数,java,Java,在尝试将多项式的常量项存储为整数时,我遇到了一个解析问题,因为在最简单的情况下,它们可能是1-3位长,而在将方程保存为字符串时,我很难从alpha值和符号解析出整数 我试过创造一些类似的东西 int x = eq.indexOf('x'); 但是由于字符串中重复了“x”字符,因此这种解析方法无效 在这种情况下,有没有更有效的方法来分离数值和alpha值?正则表达式是您的朋友: private static List<Integer> extractIntegers(Stri
int x = eq.indexOf('x');
但是由于字符串中重复了“x”字符,因此这种解析方法无效
在这种情况下,有没有更有效的方法来分离数值和alpha值?正则表达式是您的朋友:
private static List<Integer> extractIntegers(String text) {
List<Integer> integers = new ArrayList<>();
Matcher m = Pattern.compile("\\d+").matcher(text);
while (m.find())
integers.add(Integer.parseInt(m.group()));
return integers;
}
输出
在我脑海中,我会做什么:
我猜你是想解析一个描述多项式的字符串“25x^2+2x+35”。我可以尝试的一种方法是从第一个字符(即2
)开始,在字符串中向前移动,跟踪一些内部状态:
int state = 1;
for(int i=0; i < my_string.length(); i++) {
char next_char = my_string.charAt(i);
// ...
}
int state=1;
for(int i=0;i
下一个状态是当前状态和读取的当前字符的函数。可能的状态集类似于:
- 例如,如果您处于状态(1)并读取一个字符数字,您将转换到状态(2)(即,您正在读取一个系数)
- 如果我处于状态(2)并读取一个数字,我将保持状态(2)。我把我读到的字符加到一些累加的数字串中
- 如果你处于状态(2)并读取字符“x”,你应该解析你积累的数字,这是你的下一个系数
- 如果您处于状态(4)并读取一个数字,则您将转换到状态(5)
int state
和一系列switch语句/if语句来计算作为函数我做了什么:(I)当前状态和(ii)我刚刚读取的数字
笔记
有人可能会提出一些短得多的建议。但至少,这将是一个很好的编程练习。您是否面临一个特定的问题?你能提供更多的细节吗?我正在尝试从一个字符串中创建一个整数值,其中的数值范围为1-3位。问题通常需要一个或多个带有疑问词的句子(如how、which等)和结尾的问号。示例:“如何从一串数字中解析整数?”。我建议学习一些基本的Java教程。当使用Integer.parseInt时,必须创建一个子字符串。我编辑了这个问题,因为我不清楚。
[5, 7, 13]
[77, 2, 4]
int state = 1;
for(int i=0; i < my_string.length(); i++) {
char next_char = my_string.charAt(i);
// ...
}