Java 长度未知时将字符串转换为整数

Java 长度未知时将字符串转换为整数,java,Java,在尝试将多项式的常量项存储为整数时,我遇到了一个解析问题,因为在最简单的情况下,它们可能是1-3位长,而在将方程保存为字符串时,我很难从alpha值和符号解析出整数 我试过创造一些类似的东西 int x = eq.indexOf('x'); 但是由于字符串中重复了“x”字符,因此这种解析方法无效 在这种情况下,有没有更有效的方法来分离数值和alpha值?正则表达式是您的朋友: private static List<Integer> extractIntegers(Stri

在尝试将多项式的常量项存储为整数时,我遇到了一个解析问题,因为在最简单的情况下,它们可能是1-3位长,而在将方程保存为字符串时,我很难从alpha值和符号解析出整数

我试过创造一些类似的东西

    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
下一个状态是当前状态和读取的当前字符的函数。可能的状态集类似于:

  • 当前字符是空白或字符串的开头
  • 当前字符是表示系数的数字
  • 当前字符是一个变量(即“x”)
  • 当前字符是指数字符(即“^”)
  • 当前字符是指数数字
  • 每次阅读一个新字符时,您都会根据上一个状态转换到一个新状态

    • 例如,如果您处于状态(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);
    
       // ...
    
    }