-1

这个问题我之前发过。但是对它进行了巨大的编辑。由于我的 java 代码未编译,因此想寻求帮助以纠正我的步骤。

编写一个 printRoots 方法,给定 3 个项作为输入,依次表示 a、b 和 c,打印它们的根。

我们有以下给定的信息

**如果 b²-4ac 是正数,您的程序应打印“两个根是 X 和 Y”,其中 X 是较大的根,Y 是较小的根

如果 b²-4ac等于 0,程序应该打印。“方程有一个 X”,其中 X 是唯一的根

如果 b²-4ac 是负数,程序应该打印。” 该方程有两个根 (-X1 + Y1i) 和 (-X2 and Y2i) * *

该术语可以根据以下条件确定:

如果 b^2 - 4ac 是负数,则二次方程变为: (-b+/- √C)/2a - 这意味着方程可以简化为 (-b+/- √Ci)/2a,其中平方根不是正数计算系数并打印(即X1是-b/2a,Y1是sqrt(-C)/2i)

注意:这个问题不允许使用扫描仪

有人可以查看我的程序并告诉我哪里出了问题,我是否可以删除我的扫描仪以使其成为没有扫描仪的程序?那我如何输入a,b,c?

请注意:您不应该在此方法中使用 Scanner。要测试您的方法,您可以在 main 方法中使用 SCanner,或者您可以将值从 main 方法硬编码到您的代码中,然后使用这些输入或输出调用方法 printRoots。


import java.util.Scanner;//delete this part after 
public class findingRoots {
  public static void main(String[] args)
    {
  }
    public static double printRoots (){ //should it be double here or int? 
      //read in the coefficients a,b,and c 
    Scanner reader = new Scanner(System.in);
    System.out.println("Enter the value of a");
    int a=reader.nextInt();
    System.out.println("Enter the value of b");
    int b=reader.nextInt();
    System.out.println("Enter the value of c");
    int c=reader.nextInt();        
    //now compte the discrimintat d 
     double discriminant = (Math.pow(b, 2.0)) - (4 * a * c);
     d=Math.sqrt(discriminant);
     double X,Y; //root 1 & root 2, respectively
     // is the step double X,Y necessary? 
     double d = (b*b)-(4.0*a*c);

       if (discriminant > 0.0){ 
       X = (-b + d)/(2.0 * a ); //X= root 1, which is larger 
       **//do i put int or double in front of X?** 
       Y = (-b - d)/(2.0 *a); //Y= root 2, which is the smaller root 
           String root1 = Double.toString(X)
       String root2 = Double.toString(Y)
   System.out.println("The two roots are X and Y:" + root1 + "and" + root2);
 }
 else{
   if (discriminant==0.0) 
     X = (-b + 0.0)/(2.0 * a);//repeated root
     String root2 = Double.toString(X)
     System.out.println("The equation has one root X:"  + root1);//where X is the only root 
 }
 if(discriminant < 0.0){
    X1 = -b/(2*a);
    Y1 = (Math.sqrt(-C))/(2*a);
    X2 = -b/(2*a);
    Y2 = (-(Math.sqrt(-C)))/(2*a);
    String root1 = Double.toString(X1)
    String root2 = Double.toString(Y1)
    String root3 = Double.toString(X2)
    String root4 = Double.toString(Y2)
    System.out.println("The equation has two roots:" + (root1 + (root2)"i") "and" + (root3 + (root4)"i");
   // where i represents the square root of negative 1 
 }
}
}
4

1 回答 1

0

好的,所以代码有很多错误。这是您的程序的运行版本。(或者至少尽可能接近你想要做的事情)。

//import java.util.Scanner;//delete this part after 
public class findingRoots {
    public static void main(String[] args) { 
        double temp = printRoots(Integer.parseInt(args[0]), Integer.parseInt(args[1]), Integer.parseInt(args[2]));
    }
    public static double printRoots (int a, int b, int c){ //should it be double here or int? 
       //read in the coefficients a,b,and c 
       //now compte the discrimintat d 
       double discriminant = (Math.pow(b, 2.0)) - (4 * a * c);
       double d=Math.sqrt(discriminant);
       double X = 0,Y = 0; //root 1 & root 2, respectively
       // is the step double X,Y necessary? 
       d = (b*b)-(4.0*a*c);

       if (discriminant > 0.0) { 
           X = (-b + d)/(2.0 * a ); //X= root 1, which is larger 
           //do i put int or double in front of X?** 
           Y = (-b - d)/(2.0 *a); //Y= root 2, which is the smaller root 
           String root1 = Double.toString(X);
           String root2 = Double.toString(Y);
           System.out.println("The two roots are X and Y:" + root1 + "and" + root2);
       }
       else if (discriminant==0.0){
           X = (-b + 0.0)/(2.0 * a);//repeated root
           String root2 = Double.toString(X);
           System.out.println("The equation has one root X:"  + root2);//where X is the only root 
       }
       else if (discriminant < 0.0){
           double X1 = -b/(2*a);
           double Y1 = (Math.sqrt(-c))/(2*a);
           double X2 = -b/(2*a);
           double Y2 = (-(Math.sqrt(-c)))/(2*a);
           String root1 = Double.toString(X1);
           String root2 = Double.toString(Y1);
           String root3 = Double.toString(X2);
           String root4 = Double.toString(Y2);
           System.out.println("The equation has two roots:" + root1 + root2  + "and" + root3 + root4);
           // where i represents the square root of negative 1 
      }
      return -1;
    }
}

要运行此代码,只需键入: java findingRoots 1 2 3其中 1 2 3 分别是您的 a、b、c 值。

这不是您想要的方式(我假设)。这应该让您开始排除故障,因为它现在可以运行。让我们看看你能从这里做什么。

于 2013-06-03T20:04:13.650 回答