我想根据第一个开关设置类的属性。如果 vrsta(工程类型)是 krug(圆形),我希望将其直径(r)作为其类型 Figura(工程图)的属性,如果它是 pravouganonik(工程矩形),我希望拥有其边:和 b,如果它是 kvadrat(eng.square) 我想要它的边值 (str)。我该如何修复我的开关,它给了我编译错误。 switch(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);
}
}
最佳答案
错误编译错误。 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();
}
}
关于java - 我可以根据其他属性设置类 "property"吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44700450/