Processing中switch语句内赋值操作的语法错误排查求助
问题排查:Processing中二维数组赋值语法错误
问题代码
void placeSlagschip(){ switch(organizationBoats){ case 1: positionSlagschip = { {BOARD[0, 0], BOARD[1, 0]}, {BOARD[0, 1], BOARD[1, 0]}, {BOARD[0, 2], BOARD[1, 0]}, {BOARD[0, 3], BOARD[1, 0]} }; break; case 2: positionSlagschip = { {BOARD[0, 8], BOARD[1, 1]}, {BOARD[0, 8], BOARD[1, 2]}, {BOARD[0, 8], BOARD[1, 3]}, {BOARD[0, 8], BOARD[1, 4]}, }; break; case 3: positionSlagschip = { {BOARD[0, 5], BOARD[1, 9]}, {BOARD[0, 5], BOARD[1, 8]}, {BOARD[0, 5], BOARD[1, 7]}, {BOARD[0, 5], BOARD[1, 6]}, }; break; } }
错误提示
Syntax Error - Missing operator, semicolon, or ‘}’ near ‘{’
问题原因
Processing基于Java,仅能在声明数组变量时使用{...}这种初始化语法,不能直接用它给已经声明好的数组变量赋值。你这里的positionSlagschip应该是已经提前声明过的数组,所以直接用=加{}的写法不符合语法规则。
修复方案
给数组赋值时,需要通过new 类型[][]{...}的方式创建新的数组实例并赋值,同时注意去掉case2、case3中最后一个元素后的多余逗号(虽然Java允许,但可能引发不必要的警告)。修改后的代码如下:
void placeSlagschip(){ switch(organizationBoats){ case 1: // 假设positionSlagschip是int类型二维数组,根据实际类型调整 positionSlagschip = new int[][]{ {BOARD[0, 0], BOARD[1, 0]}, {BOARD[0, 1], BOARD[1, 0]}, {BOARD[0, 2], BOARD[1, 0]}, {BOARD[0, 3], BOARD[1, 0]} }; break; case 2: positionSlagschip = new int[][]{ {BOARD[0, 8], BOARD[1, 1]}, {BOARD[0, 8], BOARD[1, 2]}, {BOARD[0, 8], BOARD[1, 3]}, {BOARD[0, 8], BOARD[1, 4]} }; break; case 3: positionSlagschip = new int[][]{ {BOARD[0, 5], BOARD[1, 9]}, {BOARD[0, 5], BOARD[1, 8]}, {BOARD[0, 5], BOARD[1, 7]}, {BOARD[0, 5], BOARD[1, 6]} }; break; } }
如果positionSlagschip不是int类型,把new int[][]中的int替换为对应的类型即可。
内容的提问来源于stack exchange,提问作者Donerre
相关产品推荐
相关产品推荐

