【发布时间】:2021-02-01 18:53:53
【问题描述】:
我正在从事一种来自codingbat的编码实践
第一个没有问题,
public int[] maxEnd3(int[] nums) {
int max = Math.max(nums[0], nums[2]);
int[] result = {max, max, max};
return result;
}
但是,第二个有编译问题,我不知道为什么。请看一下我的代码。谢谢!
public int[] maxEnd3(int[] nums) {
int first = nums[0];
int last = nums[2];
int[] result = new int[2];
if (first >= last) {
result = {first, first, first};
} else {
result = {last, last, last};
}
return result;
}
编译问题: 缺少 '}' 或非法的表达式开头
【问题讨论】:
-
那么编译的代码和不编译的代码有什么区别呢?此外,您有一个总是返回值的 if/else 语句,那么
return nums将如何执行?另外,你怎么知道 nums 数组将包含 3 个值?您应该进行编辑以检查数组的大小,以免索引超出范围。不要假设您的数据是正确的。 -
对不起,我编辑了我的第二个代码。当您检查链接时,数组的长度设置为 3。第一个代码和第二个代码之间的区别在于第一个代码,我创建一个数组并在一行中附加值。但是,在第二个代码中,我创建了一个数组并在两个不同的行中附加值。(int[] result = new int[2];result = {first, first, first}; or result = {last, last, last} ;)
-
在第一种情况下,数组的声明是在单个语句中完成的。在第二种情况下,您尝试在两个语句中执行此操作,但类型信息不可用。
标签: java arrays integer append