我使用我的FigureGeometry接口创建了3个Circle,Rectangle和RightTriangle类。该程序应该使用不同的类进行输入运行计算。
我的do / while语句出现了一些错误。 do语句说“非法开始类型”。我的while语句说同样和“找不到变量选项”。
我已尝试在这里搜索其他问题/ google,但我找不到任何有助于我的代码的内容。它总是像一个额外的支架,但据我所知,这里没有任何额外的东西。
我已经仔细检查了我的所有打开/关闭括号是否匹配。我已经尝试在do语句中使用我的选项变量(我确定这是不正确的,但我只是尝试了一些不同的东西)。我只是不确定是什么问题?
package figuregeometry;
import java.util.Scanner;
public class FigGeometryCalculator
{
//========================MAIN==============================================
public static void main(String[] args)
{
float height;
float width;
float length;
float radius;
float degrees;
String menu = "Would you like to figure the geometry for a: " + "\n"
+ "1. Circle" + "\n"
+ "2. Rectangle" + "\n"
+ "3. Right Triangle" + "\n"
+ "0. Exit";
do
{
Scanner in = new Scanner(System.in);
int option = in.nextInt();
switch(option)
{
case 1: System.out.println("Enter radius: ");
radius = in.nextFloat();
System.out.println("Enter Degrees of sector: ");
degrees = in.nextFloat();
Circle newCircle = new Circle(radius, degrees);
System.out.println("Set Scale: ");
newCircle.setScale(in.nextInt());
newCircle.toString();
break;
case 2: System.out.println("Enter length: ");
length = in.nextFloat();
System.out.println("Enter width: ");
width = in.nextFloat();
Rectangle newRectangle = new Rectangle(length, width);
System.out.println("Set Scale: ");
newRectangle.setScale(in.nextInt());
newRectangle.toString();
break;
case 3: System.out.println("Enter Length: ");
length = in.nextFloat();
System.out.println("Enter Height: ");
height = in.nextFloat();
RightTriangle newTriangle = new RightTriangle(length, width);
System.out.println("Set Scale: ");
newTriangle.setScale(in.nextInt());
newTriangle.toString();
break;
case 0:
System.out.println("Exit");
break;
default: System.out.println("Not an a valid option. Please try again.");
}
}while(option != 0);
}
}
答案 0 :(得分:3)
问题:
删除所有无效修饰符。也就是说,改变:
public float height;
public float width;
public float length;
public float radius;
public float degrees;
要:
float height;
float width;
float length;
float radius;
float degrees;
可能不是您问题的直接答案,但您需要将您的输入option = in.nextInt();
放入循环中。否则你最终会得到一个无限循环。
例如,如果用户选择“1”,则选项变为1并且永远不会在循环内更新,因此您的循环将永远运行。
修改强>
只是为了澄清,因为我看到你不理解。
你没有把int option = in.nextInt();
放在循环中,除了int
之外你都放了。{1}}。 (所以在循环中option = in.nextInt();
)。你在循环之外说int option;
。
所以:
int option; // created outside the loop
do {
System.out.print(menu);
option = in.nextInt(); // used inside the loop
switch(option)
{
// CASES AND CODE
}
} while(option != 0);
这就是为什么你得到一个错误,因为你的变量选项对于while循环是不可见的,所以如果找不到它,循环就无法比较0。
通常,尽量不要在循环内部创建任何内容,并在其外部创建以防止不必要的对象创建。另一个例子,你的Scanner
对象应该在你的循环之外创建。
将语句Scanner in = new Scanner(System.in);
置于循环之外,然后按照上述方式使用option = in.nextInt();
。