gpt4 book ai didi

java - 二次读取方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:29 24 4
gpt4 key购买 nike

我必须为二次类编写一个读取方法,其中以 ax^2 + bx + c 的形式输入二次。该类的描述是这样的:

添加一个读取方法,要求用户提供标准格式的方程式并正确设置三个实例变量。 (因此,如果用户键入 3x^2 - x,则将实例变量设置为 3、-1 和 0)。这将需要您之前完成的字符串处理。显示按原样输入的实际方程式,并正确标记为预期输出。

我能够通过使用字符串操作和 if else 语句来完成 ax^2 部分。但我不确定如何计算等式的 bx 和 c 部分,因为符号可能位于 bx 和 c 的前面。以下是我如何执行该方法的 ax^2 部分。

public void read()
{
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter a quadratic equation in standard format.");
String formula = keyboard.next();
String a = formula.substring(0, formula.indexOf("x^2"));
int a2 = Integer.parseInt(a);
if (a2 == 0)
{
System.out.println("a = 0");
}
else if (a2 == 1)
{
System.out.println("a = 1");
}
else
{
System.out.println("a = " + a2);
}
}

随意编写任何代码作为示例。任何帮助将不胜感激。

最佳答案

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Mini {

public static void main(String[] args) {
int a = 0;
int b = 0;
int c = 0;

String formula = " -x^2 + 6x - 5";
formula = formula.replaceAll(" ", "");

if (!formula.startsWith("+") && !formula.startsWith("-"))
formula = "+" + formula;

String exp = "^((.*)x\\^2)?((.*)x)?([\\+\\s\\-\\d]*)?$";
Pattern p = Pattern.compile(exp);
Matcher m = p.matcher(formula);

System.out.println("Formula is " + formula);
System.out.println("Pattern is " + m.pattern());

while (m.find()) {
a = getDigit(m.group(2));
b = getDigit(m.group(4));
c = getDigit(m.group(5));
}

System.out.println("a: " + a + " b: " + b + " c: " + c);

}

private static int getDigit(String data) {
if (data == null) {
return 0;
}
else
{

if (data.equals("+"))
{
return 1;
}
else if (data.equals("-"))
{
return -1;
}
else
{
try
{
int num = (int) Float.parseFloat(data);
return num;
}
catch (NumberFormatException ex)
{
return 0;
}
}
}
}
}

关于java - 二次读取方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15128758/

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