是否有一个 Java 函数来查找数组元素在排序的字符串数组中的位置



我的作业问题是这样的:

用Java编写一个程序,将朋友的20个不同姓名和电话号码存储在两个不同的一维数组中。现在按字母顺序排列所有姓名,并显示所有姓名及其各自的电话号码。

我想出了这个代码

public class Q7
{
public static void main()
{
String name[]={"Dean","Sean","Daniel","Sheldon","Adi","Raj","Steve","Ava","Riley","Jessie"};
String Temp[]=new String[10];
for(int i=0;i<10;i++)//Creating another unsorted array to find respective telephone numbers later
{ Temp[i]=name[i];}
long number[]={7747872132L,7975117568L,4008269466L,8028612214L,9448011416L,949153772L,9591817794L,9845666946L,9448638374L,8182248864L};//telephone numbers of people in name[] respectively
String temp="";
for(int i=0;i<name.length;i++)//Sorting
{
for(int j=i+1;j<name.length;j++)
{
if(name[j].compareTo(name[i])<0)
{
temp=name[i];
name[i]=name[j];
name[j]=temp;
}
}
}
System.out.println("NamettTelephone Number");
for(int i=0;i<name.length;i++)
System.out.println(name[i]+"ttt"+number[Temp.IndexOf(name[i])]);//This is where I need help
}
}

我面临的问题是我不知道打印带有各自姓名的电话号码。请帮助我这是我的学校作业。

你能告诉我如何同时交换数字和名称的元素吗?这将是一个很大的帮助

不要在实际代码中执行此操作。改变

if(name[j].compareTo(name[i])<0)
{
temp=name[i];
name[i]=name[j];
name[j]=temp;
}

if(name[j].compareTo(name[i]) < 0)
{
temp = name[i];
name[i] = name[j];
name[j] = temp;
long ntemp = number[i];
number[i] = number[j];
number[j] = ntemp;
}

可以消除temp数组(每个要交换的元素只需要一个本地单个temp(。

您可以通过引入name[]的复制数组来简单地解决问题copiedNames以保留原始顺序。

然后,您将使用Arrays.asList(copiedNames).indexOf(name[i])copiedNames中查找 Stringname元素的索引。电话号码将从该索引中获取。

以下是工作代码

<!-- language: java -->
public static void main(String[] args) {
final String name[] = {"Dean", "Sean", "Daniel", "Sheldon", "Adi", "Raj", "Steve", "Ava", "Riley", "Jessie"};
final String copiedNames[] = name.clone();
final long number[] = {7747872132L, 7975117568L, 4008269466L, 8028612214L, 9448011416L, 949153772L, 9591817794L, 9845666946L, 9448638374L, 8182248864L};// telephone
String temp = "";
for (int i = 0; i < name.length; i++) // LinearSearch
{
for (int j = i + 1; j < name.length; j++) {
if (name[j].compareTo(name[i]) < 0) {
temp = name[i];
name[i] = name[j];
name[j] = temp;
}
}
}
System.out.println("NamettTelephone Number");
for (int i = 0; i < name.length; i++) {
System.out.println(name[i] + "ttt" + number[Arrays.asList(copiedNames).indexOf(name[i])]);// fix your need
}
}

最好

public class Q7
{
public static void main()
{
String name[]={"Dean","Sean","Daniel","Sheldon","Adi","Raj","Steve","Ava","Riley","Jessie"};
String Temp[]=new String[10];
for(int i=0;i<10;i++)//Creating another unsorted array to find respective telephone numbers later
{ Temp[i]=name[i];}
long number[]={7747872132L,7975117568L,4008269466L,8028612214L,9448011416L,949153772L,9591817794L,9845666946L,9448638374L,8182248864L};//telephone numbers of people in name[] respectively
String temp="";
for(int i=0;i<name.length;i++)//Sorting
{
for(int j=i+1;j<name.length;j++)
{
if(name[j].compareTo(name[i])<0)
{
temp=name[i];
name[i]=name[j];
name[j]=temp;
}
}
System.out.println("NamettTelephone Number");
for(int i=0;i<name.length;i++)
System.out.println(name[i]+"ttt"+number[indexOfArray(Temp,name[i])]);  //call indexOfArray here to find the position of unsorted array
}

public static int indexOfArray(String[] arr, String input){
for(int i=0;i<arr.length;i++)
{
if(arr[i].equals(input))
{
return i ;
}
}
return -1;    // if the text not found the function return -1
}
}

希望这可以帮助您!!

最新更新