gpt4 book ai didi

java - 我可以根据其他属性设置类 "property"吗?

转载 作者:行者123 更新时间:2023-12-02 12:47:35 25 4
gpt4 key购买 nike

我想根据第一个开关设置类的属性。如果 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,并从中创建其他子类 CircleSquareRectangle

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com