用户需要从提供选项中选择一个选项。如果用户选择三角形,程序会提示用户输入顶点的坐标,并计算三角形周长的文本。我无法解决错误。
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
答案 0 :(得分:0)
您已在任何方法之外初始化p1
,p2
和p3
。这样做是可以的,但前提是你在声明它们的声明中初始化它们。
所以你可以写
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);