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

标签 java class variables

我想根据第一个开关设置类的属性。如果 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/

相关文章:

c++ - 如何在类中初始化动态数组?

java - 字符串比较未正确返回?

java - 如果我在 Java 中截断文件, "removed"字节会发生什么?

c++ - C++ 类的 Qt 类数据成员在使用前是否应该初始化?

java - 计划中的 TWSz Java API 重启和 restartAndCleanUp 作业

java - 如果一个类被声明为 final 是否有必要将方法声明为 final

string - 读取文件,并将每一行提取为它自己的变量 [Bash]

variables - IntelliJ : How to auto-highlight variables like in Eclipse

java - 使用 Java 重写二进制流

java - 在 Java 中将数据传递给 Tensorflow 模型