以下是代码:
public static void main(String args[])
{
int i=0;
int m=0;
double scale;
boolean exit;
Shape[] s = new Shape[10];
while(exit !=true)
{
System.out.print("\nChoose an option:\n"+
"1-Add a new circle\n"+
"2-Add a new rectangle\n"+
"3-Delete all shapes\n"+
"4-Scale all shapes\n"+
"5-Display perimeter of all shapes\n"+
"6-Display the area of all shapes\n"+
"7-Enter scale factor\n"+
"8-Exit program\n");
Scanner input = new Scanner(System.in);
m=input.nextInt();
if(i<=9)
{
switch (m)
{
case 1: Circle c = new Circle(0);
s[i]=c;
i++;
break;
case 2: Rectangle r = new Rectangle(1,1);
s[i]=r;
i++;
break;
case 3: s=null;
i=0;
break;
case 4: for(i=0; i<s.length; i++)
{
s[i].scaleShape();
}
break;
case 5: for(i=0; i<s.length; i++)
{
if(s[i] != null)
{
System.out.println(s[i].getPerimeter());
}
}
break;
case 6: for(i=0; i<s.length; i++)
{
if(s[i] != null)
{
System.out.println(s[i].getArea());
}
}
break;
case 7: do
{
System.out.println("\nEnter scale factor");
scale=input.nextDouble();
}
while(scale<0);
Shape.setScaleFactor(scale);
}
break;
case 8: System.out.println("Do you want to quit?");
break; //Nothing here since loop should terminate it.
//default: System.out.println("Number must be 1-8");
// break;
}
}
}
}
类型不匹配无法从int转换为布尔值。
但是我没有把任何东西转换为布尔值
- 令牌“case”的语法错误断言预期 - 令牌上的-syntax错误:,;预期
但是那里的所有命令都有分号
表达式必须返回值
为什么编译器表现得如此有趣?通常这样的错误很容易找到。发生了什么事?
答案 0 :(得分:4)
你的问题是 7 :
case 7: do
{
System.out.println("\nEnter scale factor");
scale=input.nextDouble();
}
while(scale<0);
Shape.setScaleFactor(scale);
}
注意额外的近距离大括号:正在关闭switch
声明,孤立你的case 8
。
答案 1 :(得分:3)
} // <-- Why is this here?
break;
case 8: System.out.println("Do you want to quit?");
您将使用额外的}
结束switch语句。删除它可能会有效。
答案 2 :(得分:1)
每个人都指出你的代码中有一个额外的括号,我们没有指出的是它来自哪里......
while(scale<0); // <-- This isn't going to work....
Shape.setScaleFactor(scale);
}
应该是......
while(scale<0) {
Shape.setScaleFactor(scale);
}
接下来的问题是,规模如何减少?如果你不小心,这可能导致无限循环。
答案 3 :(得分:0)
while(scale<0);
Shape.setScaleFactor(scale);
} // Remove this parenthesis.
break;