我在BlueJ中创建一个应用程序,允许用户对无序数组进行排序和搜索。我有搜索工作。目前它要求用户输入一个数字来搜索数组并返回找到或未找到的数据。
我希望能够告诉用户数组中找到该号码的位置是什么?
以下是我的搜索方法代码:
public static void dosearch(OArray a)
{
clrscr();
if ( a.isEmpty() ) {
System.out.println("Array is Empty!");
pressKey();
return;
}
clrscr();
System.out.println("Enter number to search for : ");
int item;
item = Genio.getInteger();
if ( a.retrieve(item) == false )
System.out.println("Cannot find " + item);
else
System.out.println(item + " Found");
pressKey();
}
OArray类代码:
public class OArray extends Array
{
// These are the Fields
// Constructor
public OArray(){
super();
System.out.println("OArray Created!!! size 10");
}
public OArray(int newsize){
super(newsize);
System.out.println("OArray Created!!!");
}
public boolean addToEnd(int item)
{
if ( isFull() == true )
return false;
array[nextfree]=item;
nextfree++;
//bubbleSort();
return true;
}
public void bubbleSort()
{
int temp = 0;boolean swaps = true;int last = nextfree-1;int i = 0;
while (swaps == true )
{
swaps=false;
i = 0;
while (i < last)
{
if (array[i] > array[i+1])
{
temp = array[i+1];
array[i+1] = array[i];
array[i] = temp;
swaps=true;
}
i++;
}
}
}
public boolean retrieve(int item)
{
if ( isEmpty() )
return false;
int i=0;
while ( i < nextfree )
{
if ( array[i] >= item )
{
posfound=i;
if ( item == array[i] )
{
itemback = item;
posfound = i;
return true;
}
else return false;
}
i++;
}
posfound = nextfree;
return false;
}
public boolean addToFront(int item)
{
return addToEnd(item);
}
答案 0 :(得分:0)
通常,访问数组中项目的唯一方法是通过索引,因此了解索引很容易,因为您已经知道了。传统的习惯用法是你有某种find()
方法,如果找到它,则返回元素的索引,否则返回-1
。
int[] a = new int[] { 7, 2, 4, 6 };
int foundAt = findItemInArray(a, 2);
if (foundAt >= 0) {
System.out.println("Found at [" + foundAt + "]");
} else {
System.out.println("Not found");
}
public static int findItemInArray(int[] a, int lookingFor) {
for (int i = 0; i < a.length; i++) {
if (a[i] == lookingFor) {
return i;
}
}
return -1;
}
答案 1 :(得分:0)
您可以使用线性搜索方法。 一旦你在for循环存储中找到了它,那么它就是那里的索引。您可以稍后再显示它。