簡體   English   中英

Java 求解二次方程的程序不起作用

[英]Java Program To Solve The Quadratic Equation Does Not Work

我正在使用課程來嘗試完成這項任務,我覺得計算機認為我把數字弄亂了,而且它們沒有按正確的順序解決。

二次亞軍

    import java.util.Scanner;
    
        import static java.lang.System.*;
    
        public class QuadraticRunner
    
        {
            public static void main( String[] args )
            {
                Scanner keyboard = new Scanner( System.in );
                out.print("Enter a :: ");
                int quadA = keyboard.nextInt();
                out.print("Enter b :: ");
                int quadB = keyboard.nextInt();
                out.print("Enter c :: ");
                int quadC = keyboard.nextInt();
                
                
                Quadratic test = new Quadratic();
                System.out.println( test.getRootOne( quadA,quadB,quadC ) );
                System.out.println( test.getRootTwo( quadA,quadB,quadC ) );
            }
        }

二次方

public class Quadratic
{
    public static double getRootOne( int a, int b, int c )
    {
        double Quad = (b*b)-(4*a*c);
        double sqrt = Math.sqrt(Quad);
        Quad = ((double)Quad + b);
        Quad = ((double)Quad/(2*a));
        return Quad;

    
        
          
} 
    public static double getRootTwo( int a, int b, int c )
    {
    double Quad = (b*b)-(4*a*c);
    double sqrt = Math.sqrt(Quad);
    Quad = ((double)Quad - b);
    Quad = ((double)Quad/(2*a));
    return Quad;
        
    
    }
}

當我嘗試將數字插入程序時,數字為 1、1、1,結果為 Root 1 = -1.0 Root 2 = -2.0

您的代碼中有兩個小錯誤:

  1. 您從不使用您在方法的第二行中定義的sqrt變量(應該在方法的第 3 行中使用)
  2. 您已經在方法的第三行中切換了參數的順序(二次公式是b +/- sqrt(...)而不是sqrt(...) +/- b

我想這應該給你正確的答案:

public class Quadratic {
    public static double getRootOne(int a, int b, int c) {
        double quad = (b*b)-(4*a*c);
        double sqrt = Math.sqrt(quad);
        quad = (b + (double) sqrt); //original: ((double)quad + b);
        quad = ((double)quad/(2*a));
        return quad;          
    } 

    public static double getRootTwo(int a, int b, int c) {
        double quad = (b*b)-(4*a*c);
        double sqrt = Math.sqrt(quad);
        quad = (b - (double) sqrt); //original: ((double)quad - b);
        quad = ((double)quad/(2*a));
        return quad;   
    }
}
import java.util.Scanner;
    
        import static java.lang.System.*;
    
        public class QuadraticRunner
    
        {
            public static void main( String[] args )
            {
                Scanner keyboard = new Scanner( System.in );
                out.print("Enter a :: ");
                int quadA = keyboard.nextInt();
                out.print("Enter b :: ");
                int quadB = keyboard.nextInt();
                out.print("Enter c :: ");
                int quadC = keyboard.nextInt();
                
                System.out.println( Quadratic.getRootOne( quadA,quadB,quadC ) );
                System.out.println( Quadratic.getRootTwo( quadA,quadB,quadC ) );
            }
        

public class Quadratic
{
    public static   double getRootOne( int a, int b, int c )
    {
        double Quad = (b*b)-(4*a*c);
        double sqrt = Math.sqrt(Quad);
        Quad = ((double)Quad + b);
        Quad = ((double)Quad/(2*a));
        return Quad;          
} 
    public static double getRootTwo( int a, int b, int c )
    {
    double Quad = (b*b)-(4*a*c);
    double sqrt = Math.sqrt(Quad);
    Quad = ((double)Quad - b);
    Quad = ((double)Quad/(2*a));
    return Quad;
        
   
    }
}
}

在上面的代碼中,您應該使用 class 名稱而不是 object,因為您創建了一個測試以將 static 方法調用到公共 static void main 方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM