java - 从字符串中提取字符并按类型放入特定数组

标签 java arrays string

我是 Java 的新手,所以我正在尝试编写随机程序来解决这个问题。我正在尝试编写一些将二次方程作为用户输入的东西,如下所示:x^2 + 3x -1

也许这太高级了(或者可能不是),但我想知道如何在循环中一个接一个地提取字符。如果全是数字,我想我可以使用 .isDigit() 并将它们保存到一个数组中,但是因为它们是不同的数据类型,所以我不确定如何去做。到目前为止,我的“代码”看起来像这样

import java.lang.String;
import java.lang.StringBuffer;
import java.util.Scanner;
import java.lang.Character;

public class Lab
{
    public static void main(String[] args)
    {
        Scanner user_input = new Scanner(System.in);
        System.out.print("Please input the quadratic equation (ex: 2x^2 + 3x - 2): ");

        String request = user_input.nextLine();
            int myArr[];
        String lettArr[];
        for (int i = 0; i <= request.length(); i++)
        {
            String c = request.charAt(i);

            if (request.isDigit(c))
            {
                myArr[1] += c;
            }
            if(request.isLowerCase(c))
            {
                lettArr[1] += c;
            }
        }
        System.out.println(myArr[0]);
    }
}

我的 .isDigit().isLowerCase() 方法不起作用。我认为我在正确的意义上使用它们。这对我的水平来说相当复杂,我想知道这是死胡同还是可接受的策略。

谢谢。

最佳答案

我认为您要做的是从用户输入中提取系数。您的方法可能有效,但在许多情况下您必须考虑(例如 +/- 符号)。相反,你为什么不尝试 Java 的正则表达式

String input = "2x^2 - 4x + 1";
input = input.replaceAll("\\s", ""); //removes  all whitespaces

Pattern p = Pattern.compile("(-?\\d+)x\\^2((\\+|-)\\d+)x((\\+|-)\\d+)");
Matcher m = p.matcher(input);

if (!m.matches()) {
    System.out.println("Incorrect input");
    return;
}

int a, b, c;
a = Integer.parseInt(m.group(1));
b = Integer.parseInt(m.group(2));
c = Integer.parseInt(m.group(4));

System.out.println(String.format("a=%d, b=%d, c=%d", a, b, c));

您可以改编此片段并在您的代码中使用它。然而,我假设你的系数是整数。相反,如果您需要它们,要成为 double,您必须更改给定正则表达式的格式,并将 Integer.parseInt 更改为 Double.parseDouble。如果您有兴趣,我可以写得更详细。

关于java - 从字符串中提取字符并按类型放入特定数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848019/

相关文章:

javascript - 如何在 React 中设置状态来更新数组?

.net - 制作你自己的 "int"或 "string"类

java - 如何在 Swing GUI 中启动 JTable?

arrays - 将数组转换为 R 中的矩阵

java - 双击空格键可删除编辑文本中的字母

python - 迭代定义的 Numpy 数组创建

java - 使用流将字符串转换为两个字符串

ios - 如何在 Swift 中的字符串中的特定索引处添加字符

java - 为通知操作设置不同的颜色

java - 如何在 JUNG 2.0 框架中复制图形?