java - 在 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,)"
。
有什么办法可以解决这个问题,还是我必须为每种形状指定一个案例?
解决方案
你不能开箱即用,但你可以这样做:
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 数组。使用类来封装数据可能会更好。
推荐阅读
- python - 将打印语句添加到在线程中工作的循环中,使其运行得更快
- java - 在 Java 中使用 zlib 解压缩(不正确的标头检查)
- python - 如何从显示中排除某个列以及如何按 field_name 显示列?
- powershell - 从 azure key vault 中的 powershell 脚本变量中获取秘密值
- spring-boot - 在 Pod 上运行时使用 SpringBoot Heapdumps & Threaddumps
- ios - 如何在tableview Swift中重新加载特定部分中的选定单元格以展开/折叠
- android - 如何删除导航 UI(Jetpack 导航组件)的交叉淡入淡出动画?
- javascript - 调用 JavaScript typeof 作为运算符 vs 函数
- angular - Spring Boot Paypal checkout sdk - 无法返回 HttpResponse
- android - StateFlow 在 Back Navigation 上再次获取相同的数据