使用方法求解二次方程的Java程序

时间:2014-11-05 22:04:42

标签: java

我有一个用于解决二次方程式的java程序,但是赋值需要我为每个任务设置方法:显示方程式,确定方程式是否具有真实解,计算解决方案以及显示解决方案存在。我想我还没有完全学习或完全理解实现方法,这是我到目前为止的代码:

import java.util.Scanner;
public class QuadraticFormula {

public static void main(String[] args)
{
    //Creating scanner and variables
    Scanner s = new Scanner(System.in);
    System.out.println("Insert value for a: ");
    double a = Double.parseDouble(s.nextLine());
    System.out.println("Insert value for b: ");
    double b = Double.parseDouble(s.nextLine());
    System.out.println("Insert value for c: ");
    double c = Double.parseDouble(s.nextLine());

    //Display format for negatives
    if (b > 0 && c > 0 ){
        System.out.println(a + "x^2 + " + b + "x + " + c + " =0");}
    if (b < 0 && c > 0 ){
        System.out.println(a + "x^2 " + b + "x + " + c + " =0");}
    if (b > 0 && c < 0 ){
        System.out.println(a + "x^2 + " + b + "x " + c + " =0");}
    if (b < 0 && c < 0 ){
        System.out.println(a + "x^2 " + b + "x " + c + " =0");}
    s.close();

    //The work/formula
    double answer1 = (-b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
    double answer2 = (-b - Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);

    //Display results and check if the solution is imaginary (real or not)
    if (Double.isNaN(answer1) || Double.isNaN(answer2))
    {
        System.out.println("Answer contains imaginary numbers");
    } else System.out.println("The values are: " + answer1 + ", " + answer2);
}
}

3 个答案:

答案 0 :(得分:1)

你的任务差不多完成了。您所需要的只是对模块化的充分理解。

  1. displayEquation(double a,double b,double c);
  2. calculateSolution(double a,double b,double c);
  3. hasRealSolutions(double answer1,double answer2);
  4. displaySolutions(double answer1,double answer2);
  5. 当然,对于这个小程序来说,这可能看起来有些多余或不必要,但是当您编写非常大的程序时,模块化概念会派上用场。请查看此http://www.javawithus.com/tutorial/call-by-value-and-call-by-reference

    我认为这是一项任务,相信我很容易。通过链接,您将自己找到答案。祝你的节目顺利。

答案 1 :(得分:0)

你的代码似乎已经足够好了,使用方法来处理不同的部分是相当直接的。您需要确保将必要的参数传递给每个方法。例如,要确定解决方案是否真实,您需要传递答案变量来检查它们。此外,由于您需要使用它来显示解决方案,因此您的方法应返回一个布尔值,以便在单独的方法中进行检查。尽量记住每种方法需要什么以及您可能需要从它们中重新启动的内容。我希望这会有所帮助。

答案 2 :(得分:0)

我会帮你为这段代码制作一个方法(我没有全部使用它,因为你自己应用它会学到更多东西)

double answer1 = (-b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);

要创建方法,您需要首先确定它的返回类型是什么(如果有),以及它的参数应该是什么。由于您正在使用双精度型,因此“工作问题”方法的返回类型应为双精度型,并且由于您有三个变量(a,b,c),因此这些变量应包含在方法参数中。

制作参数时,您必须首先说明它们的类型,然后给它们命名。如果您有多个参数,则必须用逗号分隔它们。

这就是方法应该看的东西。

private static double workTheFirstPart(double a, double b, double c)
{
  double ans = (-b + Math.sqrt(Math.pow(b, 2) - (4 * a * c))) / (2 * a);
   return ans;
}

为了清楚起见,这段代码将放在main方法之外(在倒数第二个括号内)

在main方法中,您应该将answer1的值设置为

  double answer1 = workTheFirstPart(a, b, c);

因为该方法返回一个double,所以你可以将answer1设置为等于它。

希望这会让你朝着正确的方向前进,希望我没有犯下任何愚蠢的错误(我整天都在工作,我的大脑有点油腻)。

祝你好运!