2017-06-03 177 views
1

用户需要从提供选项中选择一个选项。如果用户选择三角形,程序会提示用户输入顶点的坐标并计算三角形的周长。我无法解决错误。使用方法计算三角形周长和圆周长

import java.util.*; 
public class Menu 
{ 
    public static void main (String[] args) 
    { 
     int userOption =0; 
     userOption = myMenu(); 
     System.out.println("User selected Option"+userOption); 

    if (userOption==1) 
    { 
     System.out.println("The perimetre of your triangle is" + getPerimeter(trianglePrompt())); 
    }  
    //else if (userOption==2) 
    //{ 
     //System.out.println("The circumference of your circle is" + circle(circlePrompt())); 
    //} 

    } 

    public static int myMenu(){ 
    int userOption; 
    Scanner myInput=new Scanner(System.in); 
    do { 
     System.out.println("Select one of the following options:"); 
     System.out.println(" 1. Triangle"); 
     System.out.println(" 2. Circle"); 
     System.out.println(" 3. Exit"); 
     userOption= myInput.nextInt(); 
    // To read a number of type float, use : myInput.nextFloat(); 
    // To read a character use : (myInput.next()).charAt(0); 
     if (userOption==3){ 
     System.out.println("Bye"); 
     System.exit(0); 
     } 

    } while (userOption !=1 && userOption !=2); 
     return userOption; 
    } 

//METHOD TO SCAN RADIUS FROM USER 
    public static double circlePrompt() 
    { 
     double radius; 
     Scanner myRadius= new Scanner(System.in); 
     do 
     { 
     System.out.println("Input a radius of a circle: "); 
     radius= myRadius.nextDouble(); 
     if(radius<0) 
      System.out.println("You must input a positive radius"); 
     } 
     while (radius<0); 
     return radius; 
    } 

//METHOD TO CALCULATE THE CIRCUMFERENCE 
    public static double circle(double radius) 
    {  
     return (2*radius*Math.PI); 
    } 
// METHOD TO SCAN 6 COORDINATES OF TRIANGLE 
    private Point p1, p2,p3; 
    public int trianglePrompt(int x1, int y1, int x2, int y2, int x3, int y3) 
    { 
    //double x1; 
    Scanner scanObject = new Scanner(System.in); 
    System.out.println("Input x1 of a Triangle : "); 
    x1= scanObject.nextInt(); 

System.out.println("Input x1 of a Triangle : "); 
    x2= scanObject.nextInt(); 

System.out.println("Input x1 of a Triangle : "); 
    x3= scanObject.nextInt(); 

System.out.println("Input x1 of a Triangle : "); 
    y1= scanObject.nextInt(); 

System.out.println("Input x1 of a Triangle : "); 
    y2= scanObject.nextInt(); 

System.out.println("Input x1 of a Triangle : "); 
    y3= scanObject.nextInt(); 
    //return x1; 

} 
    p1 = new Point(x1,y1); 
    p2 = new Point(x2,y2); 
    p3 = new Point(x3,y3); 
    public double getSideA() 
    { 
     double length = p1.distance(p2); 
     return length; 
    } 

    public double getSideB() 
    { 
    double length = p2.distance(p3); 
    return length; 
    } 

    public double getSideC() 
     { 
     double length = p3.distance(p1); 
     return length; 
     } 

//METHOD TO CALCULATE PERIMETRE OF TRIANGLE BY ADDING ALL THREE SIDES 
    public int getPerimeter() 
    { 
    int as = getSideA(), bs = getSideB(), cs = getSideC(); 
    return (as + bs + cs); 
    } 
} 

错误:

Menu.java:108: error: <identifier> expected 
p1 = new Point(x1,y1); 
^
Menu.java:109: error: <identifier> expected 
p2 = new Point(x2,y2); 
^
Menu.java:110: error: <identifier> expected 
p3 = new Point(x3,y3); 
^
3 errors 

回答

-1

P1 =新点(X1,Y1);

应该是

Point p1 = new Point(x1,y1);

+0

这将只替换当前的编译错误。而且,如果你修复了第二个编译错误,程序仍然无法工作。所以这个答案不是特别有用,因此我的downvote。 –

0

您已经初始化了任何方法之外的p1,p2p3。可以这样做,但前提是你在声明它们的同一个语句中初始化它们。 所以,你可以写的

private Point p1 = new Point(x1, y1); 
private Point p2 = new Point(x2, y2); 
private Point p3 = new Point(x3, y3); 

代替

private Point p1, p2, p3; 

,然后删除三行的错误。这将修复你的编译错误,但它不会让你的程序工作,因为这意味着这些行将在值x1, y1, x2, y2, x3, y3具有用户输入的值之前运行。

你真正想要做的是移动线

p1 = new Point(x1, y1); 
p2 = new Point(x2, y2); 
p3 = new Point(x3, y3); 

等向上,以前}字符之前。这样,他们将会在x1, y1, x2, y2, x3, y3设置的方法中,并且会在这些变量被赋予其值之后运行。