首页 > 解决方案 > 在 createShape() 中使用字符串而不是某种形状

问题描述

我想将一个字符串数组传递给一个函数,draw()并让函数绘制每个形状,第一个参数指定要绘制的形状类型。这是我的代码(内部draw()):

params = new String[]{"LINE","0","0","2","3"};
if (params.length == 2) {
  createShape(params[0],float(params[1]));
} else if (params.length == 3) {
  createShape(params[0],float(params[1]),float(params[2]));
} ...
} else if (params.length == 5) {
  createShape(params[0],float(params[1]),float(params[2]),float(params[3]),float(params[4]));
} ...

省略号表示具有不同数量参数的更多 else if 语句。我知道以这种方式将值传递给 createShape() 似乎是多余的,但这是我能找到的最好的方式来实现我的目的,我想知道如何使它工作。目前,这段代码给了我一个错误并说The function createShape() expects parameters like: "createShape(int,)"

有什么办法可以解决这个问题,还是我必须为每种形状指定一个案例?

标签: javaprocessing

解决方案


你不能开箱即用,但你可以这样做:

void createMyShape(String[] myArray){
  if(myArray[0].equals("LINE")){
    Shape s = createShape(LINE);
    s.vertex(int(myArray[1]), int(myArray[2]));
    s.vertex(int(myArray[3]), int(myArray[4]));
    s.endShape();
  }
  else if ...
}

此函数解析myArray参数并使用if语句采取正确的操作来创建形状。它还使用该int()函数来解析字符串数组。

请注意,这不是一个很好的设计。您可能不应该为此使用 String 数组。使用类来封装数据可能会更好。


推荐阅读