搜索项目的数组。如何显示位置项目?
我正在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);
}
回答:
一般来说,在一个数组来访问某个项目的唯一途径是通过指数,因此,了解索引很容易,因为你已经知道了。传统的习惯用法是,你有某种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;
}
回答:
您可以使用线性搜索方法。 在for循环存储中找到数字后,它就是索引。您可以稍后再显示它。
以上是 搜索项目的数组。如何显示位置项目? 的全部内容, 来源链接: utcz.com/qa/266205.html