You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 09:43:25