Java 如果我的int返回方法找不到数值解,我该返回什么?
这是我在数组中查找单个副本的方法。当数组没有重复项时,我应该返回什么Java 如果我的int返回方法找不到数值解,我该返回什么?,java,int,return,Java,Int,Return,这是我在数组中查找单个副本的方法。当数组没有重复项时,我应该返回什么 public int findDuplicate(int[] array) { Arrays.sort(array); int duplicate = 0; for(int i = 0; i < array.length; i++) { if(array[i] == duplicate) { return duplicate;
public int findDuplicate(int[] array) {
Arrays.sort(array);
int duplicate = 0;
for(int i = 0; i < array.length; i++)
{
if(array[i] == duplicate)
{
return duplicate;
}
duplicate = array[i];
}
return ???;
}
public int findDuplicate(int[]数组){
数组。排序(数组);
重复整数=0;
for(int i=0;i
我可以想出三种可能的解决方案:
-1
Integer
并返回null
。自动装箱和拆箱可以简化进行此更改所需的工作我可以想出三种可能的解决办法:
-1
Integer
并返回null
。自动装箱和拆箱可以简化进行此更改所需的工作我想到了三种可能的解决方案:
Integer
并返回null
。我个人不喜欢那种APIboolean hasdeplicate()
和int getDuplicate()
中拆分方法,如果没有重复项,则引发异常。这感觉是错误的,因为提出一个例外,因为一切都很好,是相当奇怪的- 在排序之前复制数组,这样调用方的内容就不会被修改
- 记录角落案例。找到了哪一个副本?第一个?最后一个
- 如果没有重复项,则返回匹配索引或-1。如果返回重复值,则不能返回-1,因为它可能是-1
- 使用
并返回Integer
。我个人不喜欢那种APInull
- 在
和boolean hasdeplicate()
中拆分方法,如果没有重复项,则引发异常。这感觉是错误的,因为提出一个例外,因为一切都很好,是相当奇怪的int getDuplicate()
您可能还需要更改代码的某些详细信息:
- 在排序之前复制数组,这样调用方的内容就不会被修改
- 记录角落案例。找到了哪一个副本?第一个?最后一个
- 想到三种可能的解决方案:
整数(从而返回NULL),而不是原始类型。或者让它抛出一个异常。您应该将其分为两个方法—Has duplicate和find duplicate。还请记住,这会将原始数组按引用传递的数组进行排序。通常-1
是一个很好的选择,我通常会选择1。特别是我正在处理的数组中只有正数,但是如果需要的话,使用一个无法处理负数的方法会让人感觉很草率。返回索引,而不是值您可以让它返回一个整数(从而返回NULL),而不是原始类型。或者让它抛出一个异常。您应该将其分为两个方法—Has duplicate和find duplicate。还请记住,这会将原始数组按引用传递的数组进行排序。通常-1
是一个很好的选择,我通常会选择1。特别是当我处理的数组中只有正数时,如果需要的话,使用一种无法处理负数的方法会让人感觉很草率。在这种特殊情况下,返回索引而不是值返回-1是错误的,请参阅我的答案。在这种特殊情况下,返回-1是错误的,查看我的答案。如果您返回Integer
并在某个地方意外地将值赋给int
,编译器不会因为自动取消装箱而抱怨,但程序将有机会使用NullPointerException崩溃…这就是原因(引用)我个人不喜欢那种API。如果您返回Integer
并在某个地方意外地将值赋给int
,编译器不会因为自动取消装箱而抱怨,但程序将有机会被NullPointerException压碎……这就是为什么(引用)我个人不喜欢那种API。好主意,但是我认为那些索引是重复的信息不应该丢失。带有index=>value
的映射会更好。@atamanroman的作者已经在修改初始数组,所以我相信他并不关心索引信息:)好主意,但我认为索引重复的信息不应该丢失。带有index=>值的映射会更好。@atamanroman的作者已经在修改初始数组,所以我相信他并不关心索引信息:)[-1,-1,1,2,3]
会发生什么?[-1,-1,1,2,3]
会发生什么?