2014-11-04 71 views
0

我有一些代碼,沒有編譯錯誤,但之後,我進入了第二個數字,而其運行的區域,崩潰在我身上:(Java代碼 - 多邊形

繼承人我有:

import java.util.Scanner; 
public class Assignment536 { 

public static void main(String[] args) { 
    Scanner input = new Scanner(System.in); 

    System.out.println("Enter the number of sides: "); 
    int numberOfSides = input.nextInt(); 
    System.out.println("Enter the side: "); 
    double side = input.nextInt(); 

    System.out.println("The area of the polygon is: " +area(numberOfSides, side)); 

    input.close(); 

} 

public static double area(int n, double side) { 
    double answer = (n*(side*side))*(4*(Math.tan((Math.PI*n)))); 
    return answer; 
} 

} 

任何幫助將不勝感激! 謝謝 塞巴斯蒂安

+1

解釋什麼是「撞上我」的意思。如果您收到錯誤消息,請在您的問題中輸入完整的錯誤消息。 – RealSkeptic 2014-11-04 08:27:06

回答

1

你應該改變:

final double side = input.nextInt(); 

final double side = input.nextDouble(); 

,如果你想讀一個double。

3

添加input.nextLine()numberOfSlicesside請求之間......

System.out.println("Enter the number of sides: "); 
int numberOfSides = input.nextInt(); 
input.nextLine(); 
System.out.println("Enter the side: "); 
double side = input.nextInt(); 

請求numberOfSlices後仍有在input緩衝回車/換行,當您嘗試,並要求sideScanner失敗,因爲它不能在回車/換行轉換爲double類型。

1

公式的最後部分是錯誤的。它應該是(Math.pi/n)。

import java.util.Scanner; 

public class CalcAreaPolygon { 

    public static void main(String[] args){ 

     Scanner scanner = new Scanner(System.in); 

     double area; 
     final double PI; /method in the formula 
     double side; 
     int n; 

     PI = Math.PI; 

     System.out.println("Enter the number of sides: "); 
     n = scanner.nextInt(); 

     scanner.nextLine(); 

     System.out.println("Enter the side: "); 
     side = scanner.nextDouble(); 

     area = (n * (side * side))/(4 * (Math.tan(PI/n))); 

     System.out.println("The area of the polygon is " + area); 

    } 

}