我想基于第一个开关设置类的属性。如果vrsta(eng。类型)是krug(圆圈)我希望它的直径(r)作为其类型Figura(eng。图)的属性,如果它是pravouganonik(eng。矩形)我想有它的边:a和b,如果它是kvadrat(eng。square)我想要它的边值(str)。如何修复我的开关,它给我编译错误。非法启动类型在开关(vrsta){,它给我预期在同一行,孤立的情况下案件“krug”。非常感谢你!
import java.util.Scanner;
class Figura{
String boja,vrsta;
Double povr;
switch (vrsta){
case "krug":
Double r;
break;
case "pravougaonik":
Double a,b;
break;
case "kvadrat":
Double str;
break;
}
Figura(String b, String v){
Scanner sc=new Scanner(System.in);
boja=b;
vrsta=v;
switch (vrsta){
case "krug":
r=sc.nextDouble();
povr=r*r*3.14;
break;
case "pravougaonik":
a=sc.nextDouble();
b=sc.nextDouble();
povr=a*b;
break;
case "kvadrat":
str=sc.nextDouble();
povr=str*str;
break;
}
}
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
Figura f1=new Figura(sc.nextLine(),sc.nextLine());
System.out.println(f1.povr);
}
}
答案 0 :(得分:1)
引发错误compile error. Illegal start of type on switch(vrsta)
,因为它不遵循定义成员的约定。相反,它应该包含在成员函数中。
成员应该像这样定义
class A {
modifiers type name;
}
此问题的简单解决方案是使用继承。创建基类Figure
,并从中创建其他子类Circle
,Square
,Rectangle
。
class Figure {
// base class
}
class Circle extends Figure {
double radius;
}
class Rectangle extends Figure {
double length;
double width;
}
class Square extends Figure {
double side;
}
在main中,您可以创建所需的类的对象
public static void main(String[] args) {
Figure f;
int type = 1; // set type as required
switch(type) {
case 1:
f = new Circle();
break;
case 2:
f = new Rectangle();
break;
case 3:
f = new Square();
break;
default:
f = new Figure();
}
}