2015-11-18 57 views
0

我的工作是創建一個包含四個類方法的二次類。創建包含四個類方法的二次類 - Java

一種方法是plusRoot()時二次公式使用加號,其返回根(-b + squarerootof d)/ 2A

另一個是minusRoot()返回時二次公式使用減號根(-b-squarerootof d)/ 2A

返回的判別方法(b^2 - 4AC)

該程序開始於它要求用戶對常數a,b的主要方法,和C,那麼使用所有其他方法輸出根。這是我創造的。

package chapter3Codes; 
import java.util.Scanner; 
public class QuadraticClass { 
    static double d; 
    static double mroot; 
    static double proot; 
    public final static void main(String[] args) { 
     System.out.println("Enter constants a, b, and c"); 
     Scanner scn = new Scanner (System.in); 
     a = scn.nextDouble(); 
     Scanner scn1 = new Scanner (System.in); 
     b = scn1.nextDouble(); 
     Scanner scn2 = new Scanner (System.in); 
     c = scn2.nextDouble(); 
     plusRoot proot = new plusRoot(); 
     minusRoot mroot = new minusRoot(); 
     System.out.println ("The roots are" + proot + "and" mroot); 
    } 
     public static double plusRoot (double a, double b, double c){ 
      double proot; 
      proot = -b + Math.sqrt(d)/ 2*a; 
      return proot ; 
     } 
     public static double minusRoot (double a, double b, double c){ 
      double mroot; 
      mroot = -b - Math.sqrt(d)/ 2*a; 
      return mroot ; 
     } 
     public static double Disc (double a, double b, double c){ 

      d = Math.pow(b, 2) - 4*a*c; 
      return d ; 

     }  
} 

我收到錯誤,如A,B和C不能被解析爲一個變量,plusRoot和minusRoot不能被解析爲一個類型。我究竟做錯了什麼?

回答

0

在java中,你必須聲明所有類型的變量。 a,b,c,plusRootminusRoot未定義。在使用前添加,

double a, b, c, plusRoot, minusRoot; 

0

您想要在主要方法中指定a,b和c的類型。這應該工作:

package chapter3Codes; 
import java.util.Scanner; 

    public class QuadraticClass { 
     static double d; 
     static double mroot; 
     static double proot; 
     public final static void main(String[] args) { 
      System.out.println("Enter constants a, b, and c"); 
      Scanner scn = new Scanner (System.in); 
      // specifying that type is double 
      double a = scn.nextDouble(); 
      double b = scn.nextDouble(); 
      double c = scn.nextDouble(); 
      double proot = plusRoot(a,b,c); 
      double mroot = minusRoot(a,b,c); 
      System.out.println ("The roots are" + proot + "and" + mroot); 
     } 
      public static double plusRoot (double a, double b, double c){ 
       double proot; 
       proot = -b + Math.sqrt(d)/ 2*a; 
       return proot ; 
      } 
      public static double minusRoot (double a, double b, double c){ 
       double mroot; 
       mroot = -b - Math.sqrt(d)/ 2*a; 
       return mroot ; 
      } 
      public static double Disc (double a, double b, double c){ 

       d = Math.pow(b, 2) - 4*a*c; 
       return d ; 

      }  
    } 

其次,您正嘗試創建新方法,創建您的方法。 您不能從方法創建對象,它必須使用類創建。new關鍵字表示創建一個新對象,這不是你想要做的。我不打算現在就解釋瞭如何創建一個新的類文件(學習基礎知識here),但要調用的方法的方法是這樣的:

// double because methods are returning a double 
double proot = plusRoot(a, b, c); // calls the method and passes a,b,c as parameters 
double mroot = minusRoot(a, b, c); 

而且,你不需要創建每次您要使用掃描儀時都需要一個新的掃描儀對象。您需要初始化一次,Scanner scn = new Scanner (System.in);並且每次您想要使用掃描儀時,都可以撥打scn.nextDouble();。沒有必要創建scn1scn2

+0

在哪裏我會把雙proot = plusRoot(a,b,c);和double mroot = minusRoot(a,b,c);? – SethZiotic

+0

替換說plusRoot proot = new plusRoot()的行;和minusRoot一樣。這是創建一個對象的方式,這不是你現在想要做的。 –

+0

*你現在正在做的是創建一個對象的方式,這不是你想要做的 –