我的Java代码中发生了什么事情使得答案是否定的? minandmax之间的公共静态int距离(双[]列表){ if(list==null | | list.length==0)返回0; int min=0; int max=0; for(int i=1;i列表[i]) { min=i; } 如果(列表[max]
好的,练习的重点是找到从最大索引到最小索引的距离。不管怎样,我的测试用例都搞砸了。我会期待1,然后得到-1。期望3,得到-3。等等我假设它必须是整数距离…=最大-最小线。但即使我把它们翻过来,结果仍然是负面的 我什么都试了好几个小时了。是否有人对此处可能出现的导致答案为否定的错误有任何意见 注意:您不能将publicstaticinc更改为double。尝试此解决方案我的Java代码中发生了什么事情使得答案是否定的? minandmax之间的公共静态int距离(双[]列表){ if(list==null | | list.length==0)返回0; int min=0; int max=0; for(int i=1;i列表[i]) { min=i; } 如果(列表[max],java,Java,好的,练习的重点是找到从最大索引到最小索引的距离。不管怎样,我的测试用例都搞砸了。我会期待1,然后得到-1。期望3,得到-3。等等我假设它必须是整数距离…=最大-最小线。但即使我把它们翻过来,结果仍然是负面的 我什么都试了好几个小时了。是否有人对此处可能出现的导致答案为否定的错误有任何意见 注意:您不能将publicstaticinc更改为double。尝试此解决方案 public static int distanceBetweenMinAndMax (double[] list) {
public static int distanceBetweenMinAndMax (double[] list) {
if (list == null || list.length == 0) return 0;
int min = 0;
int max = 0;
for (int i = 1; i < list.length; i++)
{
if (list[min] > list[i])
{
min = i;
}
if (list[max] < list[i])
{
max = i;
}
}
int distanceBetweenMinandMax = max - min;
return distanceBetweenMinandMax;
}
minandmax之间的公共静态int距离(双[]列表){
if(list==null | | list.length==0)返回0;
双最小值=0;
双最大值=0;
int mxi=0;
int-mni=0;
for(int i=0;i列表[i])
{
min=列表[i];
mni=i;
}
如果(最大值<列表[i])
{
max=列表[i];
mxi=i;
}
}
minandmax=mxi-mni之间的int距离;
返回minandmax之间的距离;
}
因此,如果结果为(-),则最大值在最小值索引之前
如果结果为(+),则最大值在最小值索引之后
public static int distanceBetweenMinAndMax (double[] list) {
if (list == null || list.length == 0) return 0;
double min = 0;
double max = 0;
int mxi=0;
int mni=0;
for (int i = 0; i < list.length; i++)
{
if (min > list[i])
{
min = list[i];
mni=i;
}
if (max < list[i])
{
max = list[i];
mxi=i;
}
}
int distanceBetweenMinandMax = mxi - mni;
return distanceBetweenMinandMax;
}
致:
使用Math.abs(minmax)--因为max和min值的索引位置可以根据输入进行交叉
minandmax=Math.abs(min-max)之间的int距离 @Ptoh64您的代码几乎是正确的,实际上只有当数组中的最大值早于最小值时,您才能获得负距离。我的意思是数组中最大值的索引小于最小值的索引 必须返回最大值和最小值的绝对差值,以避免距离e.i为负值
int distanceBetweenMinandMax = max>min?(max-min):(min-max);
除上述更改外,整个代码将是相同的
int distanceBetweenMinandMax = Math.abs(max - min)
minandmax之间的公共静态int距离(双[]列表){
if(list==null | | list.length==0)
返回0;
int min=0;
int max=0;
for(int i=1;i列表[i]){
min=i;
}
如果(列表[max]<列表[i]){
max=i;
}
}
int distance betweenMinandmax=Math.abs(max-min);//这里取绝对差
返回minandmax之间的距离;
}
您的练习是否真的分别比较了列表的索引或值?不管怎么说,乍一看,我觉得你的
是错误的。因此,要找到最小值,您应该使用if(list[min]
和
来找到最大值。您可以添加一个计算不正确的测试用例吗?您应该返回Math.abs(max-min)
。重点是比较索引。因此,如果你有[0,1,12],你希望结果是它们之间有多少个空格。我也不能使用数学或导入任何东西。@ptoh64要求澄清,请发布准确的问题陈述。您的“好的,练习的重点是找到从最大索引到最小索引的距离。”非常令人困惑。练习的重点是找到从最大索引到最小索引的距离。
键入不匹配错误。无法将double转换为Int更改类型,我编辑了解决方案,您可以尝试任何一种,但最后一种更好您不允许在这里使用。我知道了,您想要索引距离,因此编辑了代码,希望它能满足您的需要
int distanceBetweenMinandMax = Math.abs(max - min)
public static int distanceBetweenMinAndMax(double[] list) {
if (list == null || list.length == 0)
return 0;
int min = 0;
int max = 0;
for (int i = 1; i < list.length; i++) {
if (list[min] > list[i]) {
min = i;
}
if (list[max] < list[i]) {
max = i;
}
}
int distanceBetweenMinandMax = Math.abs(max - min); // here take absolute difference
return distanceBetweenMinandMax;
}