如何在int数组(java)中追加int?

如何在int数组(java)中追加int?,java,arrays,integer,append,Java,Arrays,Integer,Append,我正在从事一项来自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 = n

我正在从事一项来自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;
}
编译问题: 缺少“}”或表达式的开头非法

int[] result = {max, max, max};
因为编译器知道类型,所以无法编译上面的代码

return {first, first, first};
上面的代码无法编译,因为编译器不知道类型

return {first, first, first};
应该是:

return new int[] {first, first, first};
或者,如果要将其分配给变量,则仍然需要使用:

result = new[int] {first, first, first};

那么编译的代码和不编译的代码有什么区别呢?另外,您有一个if/else语句,它总是返回一个值,那么
returnnums
将如何执行呢?另外,您如何知道nums数组将包含3个值?您应该有一个编辑来检查数组的大小,这样您就不会得到超出范围的索引。不要假设您的数据是正确的。很抱歉造成混淆,我编辑了第二个代码。检查链接时,数组的长度设置为3。第一个代码和第二个代码之间的区别在于第一个代码,我创建了一个数组并在一行中附加值。但是,在第二段代码中,我创建了一个数组并在两行中追加值。(int[]result=newint[2];result={first,first};或者result={last,last,last};)在第一种情况下,数组的声明在一条语句中完成。在第二种情况下,您尝试在两个语句中执行此操作,但类型信息不可用。非常感谢您的回答。我终于解决了编译问题。但是为什么我们需要指定返回数组的类型呢。我很好奇,因为当我返回布尔值、字符串或int时,我只能返回true;返回“A”,返回0;我不是一个编译器专家,但是编译器不够聪明,不知道应该是什么类型。通常{}用于代码块,所以我猜它不知道您实际上想要创建一个数组。它假定代码块中的语句不正确。基本体与对象不同。您不需要创建基元的实例。“A”是字符串文字。由于字符串非常常用,编译器将为您创建一个字符串对象。非常感谢您花时间进行详细解释。你是最棒的