Java菜单程序二维数组误用问题求助:修正为一维数组操作
选项2错误修正
错误核心:误将一维MenuItem数组当作二维数组操作,用[x][0]/[x][1]的二维下标语法访问对象属性。
修正后代码(需结合MenuItem类的属性定义调整,以下两种场景二选一):
// 场景1:MenuItem类提供getter/setter方法(推荐封装写法) temp[x] = new MenuItem(menuitem[x].getName(), menuitem[x].getPrice()); // 修改元素属性时: temp[x].setName(/* 新名称值 */); temp[x].setPrice(/* 新价格值 */); // 场景2:MenuItem类的属性为public(直接访问字段) temp[x] = new MenuItem(menuitem[x].name, menuitem[x].price); // 修改元素属性时: temp[x].name = /* 新名称值 */; temp[x].price = /* 新价格值 */;
选项3错误修正
错误核心:用二维数组下标语法访问一维MenuItem数组的元素属性。
修正后代码:
// 场景1:使用getter方法 System.out.println(x + ")" + menuitem[x].getName() + ": $" + menuitem[x].getPrice()); // 场景2:直接访问public字段 // System.out.println(x + ")" + menuitem[x].name + ": $" + menuitem[x].price);
选项4错误修正
错误核心:两处二维数组语法误用——打印时的属性访问、修改属性时的下标操作。
修正后代码:
// 打印部分修正 System.out.println(x + ")" + menuitem[x].getName() + ": $" + menuitem[x].getPrice()); // 或直接访问public字段: // System.out.println(x + ")" + menuitem[x].name + ": $" + menuitem[x].price); // 修改价格属性修正 menuitem[order].setPrice(option2); // 或直接访问public字段: // menuitem[order].price = option2;
关键说明
所有错误均源于混淆了一维对象数组与二维基本类型数组的操作逻辑:
- 一维
MenuItem数组的每个元素是独立的MenuItem对象,需通过对象的属性或方法访问内部数据,而非二维数组的[x][y]下标。 - 若你的
MenuItem类未定义getter/setter,直接访问public字段即可;若遵循面向对象封装原则,建议使用getter/setter方法操作属性。
内容的提问来源于stack exchange,提问作者Luis Rivera
相关产品推荐
相关产品推荐

