我想根据这第一个开关设置类的属性。如果vrsta(eng。type)是krug(circle),我想将它的直径(r)作为其类型Figura(eng。Figure)的属性,如果它是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);
}
}
再也无法解决我的问题的类的对象,我想,当我如我菲古拉对象有像f1.str属性一个例子。 –
您无法按照您在代码中显示的方式执行此操作。 switch语句在运行时被评估,而类成员变量必须在编译时声明。毕竟,编译器必须创建已经具有相应字段的类字节码,并且由于编译的类不知道哪些实例具有什么几何类型,所以这不起作用。 相反,如@Rajeev Singh所建议,使用继承来创建在运行时与所需几何类型相匹配的对象实例。 –