我想根據這第一個開關設置類的屬性。如果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所建議,使用繼承來創建在運行時與所需幾何類型相匹配的對象實例。 –