黑马程序员技术交流社区
标题:
和视频中讲的一样的代码,怎么我的没法运行???
[打印本页]
作者:
aerkadiya
时间:
2013-5-17 17:25
标题:
和视频中讲的一样的代码,怎么我的没法运行???
本帖最后由 aerkadiya 于 2013-5-17 17:44 编辑
class ChaZhao
{
public static void main(String[] args)
{
int[] arr={2,4,5,7,19,32,45};
int index = halfSearch(arr,32);
int index = halfSearch_2(arr,5);
System.out.println("index="+index);
}
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mic;
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = min +1;
else if(key<arr[mid])
max = mid-1;
else
return mid;
}
return -1;
}
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if (key>arr[mid])
mid = mid+1;
else if(key<arr[mid])
max = mid-1;
else if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
}
作者:
徐启坤
时间:
2013-5-17 17:30
本帖最后由 徐启坤 于 2013-5-17 17:34 编辑
以后写程序在class前面加上public,一个程序必须要有一个公开类,否则可能会提示找不到主类
作者:
神之梦
时间:
2013-5-17 17:30
是编译错误?错误提示是什么?
作者:
王靖远
时间:
2013-5-17 17:58
lass ChaZhao
{
public static void main(String[] args)
{
int[] arr={2,4,5,7,19,32,45};
int index = halfSearch(arr,32);
int index = halfSearch_2(arr,5);//已经有一个变量名为index,这个就不能再叫index了 可以叫index1嘛
System.out.println("index="+index);
}
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mic;//mid你打成了mic了第二个错误
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = min +1;
else if(key<arr[mid])
max = mid-1;
else
return mid;
}
return -1;
}
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if (key>arr[mid])
mid = mid+1;
else if(key<arr[mid])
max = mid-1;
else if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
}
作者:
aerkadiya
时间:
2013-5-17 18:18
运行后显示找不到mid符号。可是按照4楼的修改后运行出来就是一个闪的光标,什么都没有啊
作者:
李慧声
时间:
2013-5-22 18:59
class ChaZhao
{
public static void main(String[] args)
{
int[] arr={2,4,5,7,19,32,45};
int index = halfSearch(arr,32);
// int index = halfSearch_2(arr,5); //你也够粗心的 至少要保证程序中成员的唯一性,定义过一个index了,下一个就给注释了,或是在定义一个index1,避免报错嘛
System.out.println("index="+index);
}
public static int halfSearch_2(int[] arr,int key)
{
int min = 0,max = arr.length-1,mid; //这里mic是什么,应该是mid吧,不然程序没法编译
while(min<=max)
{
mid = (max+min)>>1;
if(key>arr[mid])
min = min +1;
else if(key<arr[mid])
max = mid-1;
else
return mid;
}
return -1;
}
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
mid = (max+min)/2;
while(arr[mid]!=key)
{
if (key>arr[mid])
min = mid+1; //这里显然是min加1,而不是mid加1
else if(key<arr[mid])
max = mid-1;
else if(min>max)
return -1;
mid = (max+min)/2;
}
return mid;
}
}
复制代码
作者:
孙茜茜
时间:
2013-5-22 19:13
我运行过了
首先是index 定义了两次
再是定义你mid时写错了,你定成mic了,还有一个地方,给min赋新值时min也写成了mid
这样就可以了,找32的换一个变量名
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2