使用方法计算三角形周长和圆周长

时间:2017-06-03 01:57:15

标签: java methods

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

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

2 个答案:

答案 0 :(得分:0)

您已在任何方法之外初始化p1p2p3。这样做是可以的,但前提是你在声明它们的声明中初始化它们。  所以你可以写

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的方法中,并且在这些变量被赋予其值之后它们将运行。

答案 1 :(得分:-1)

p1 =新点(x1,y1);

应该是

点p1 =新点(x1,y1);