BinarySearch 中的变量声明
Variable declaration in BinarySearch
我正在研究 java 项目 BinarySearch。我正在尝试创建并初始化一个变量 mid
,它将找出中间值,但它给我一个错误,你不能在这里声明一个变量。我也用 split 声明尝试过,但没有用。这是我的一段代码:
public static boolean binarySearch(int[] data, int target, int low, int high){
if(low>high)
return false;
else
int mid=(low + high )/2;
if(target==data[mid]);
return true;
else if(target<data[mid])
return binarySearch(data, target, low, mid - 1);
else
return binarySearch(data, target, mid + 1, high);
}
我应该怎么做才能解决这个问题?
问题是你在 else 中声明它,它立即超出范围并且值丢失
您可以通过在该范围之外声明它(在 if 语句之前)或删除 else
来避免该问题
if(low>high)
return false;
int mid=(low + high )/2;
当你在一个块中声明一个变量时,你不能从块外访问它,
你应该从 if 中去除变量并在 if 中改变他,
然后,当您使用 target==data[mid]
访问它时,程序将知道从哪里获取它。
例如:
public static boolean binarySearch(int[] data, int target, int low, int high){
int mid;
if(low>high)
return false;
else
mid=(low + high )/2;
if(target==data[mid]);
return true;
else if(target<data[mid])
return binarySearch(data, target, low, mid - 1);
else
return binarySearch(data, target, mid + 1, high);
}
有关变量作用域的更多信息:
Scope of Variables In Java
你在这里犯了两个错误。
- 首先你必须在开头声明 mid 变量,因为它也在其他范围内使用(不仅在 else 范围内)。
- 第二个是你必须删除这里的分号
if(target==data[mid]);
。因为它正在终止线路。
解决这些问题后的代码,
public static boolean binarySearch(int[] data, int target, int low, int high){
int mid;
if (low > high)
return false;
else
mid = (low + high) / 2;
if (target == data[mid])
return true;
else if (target < data[mid])
return binarySearch(data, target, low, mid - 1);
else
return binarySearch(data, target, mid + 1, high);
}
我正在研究 java 项目 BinarySearch。我正在尝试创建并初始化一个变量 mid
,它将找出中间值,但它给我一个错误,你不能在这里声明一个变量。我也用 split 声明尝试过,但没有用。这是我的一段代码:
public static boolean binarySearch(int[] data, int target, int low, int high){
if(low>high)
return false;
else
int mid=(low + high )/2;
if(target==data[mid]);
return true;
else if(target<data[mid])
return binarySearch(data, target, low, mid - 1);
else
return binarySearch(data, target, mid + 1, high);
}
我应该怎么做才能解决这个问题?
问题是你在 else 中声明它,它立即超出范围并且值丢失
您可以通过在该范围之外声明它(在 if 语句之前)或删除 else
来避免该问题if(low>high)
return false;
int mid=(low + high )/2;
当你在一个块中声明一个变量时,你不能从块外访问它,
你应该从 if 中去除变量并在 if 中改变他,
然后,当您使用 target==data[mid]
访问它时,程序将知道从哪里获取它。
例如:
public static boolean binarySearch(int[] data, int target, int low, int high){
int mid;
if(low>high)
return false;
else
mid=(low + high )/2;
if(target==data[mid]);
return true;
else if(target<data[mid])
return binarySearch(data, target, low, mid - 1);
else
return binarySearch(data, target, mid + 1, high);
}
有关变量作用域的更多信息: Scope of Variables In Java
你在这里犯了两个错误。
- 首先你必须在开头声明 mid 变量,因为它也在其他范围内使用(不仅在 else 范围内)。
- 第二个是你必须删除这里的分号
if(target==data[mid]);
。因为它正在终止线路。
解决这些问题后的代码,
public static boolean binarySearch(int[] data, int target, int low, int high){
int mid;
if (low > high)
return false;
else
mid = (low + high) / 2;
if (target == data[mid])
return true;
else if (target < data[mid])
return binarySearch(data, target, low, mid - 1);
else
return binarySearch(data, target, mid + 1, high);
}