我已经设法在数组中搜索,但是如何显示在数组中搜索以下代码的值的位置?import javax.swing.*;import java.util.Arrays;public class Listahan { public static void main(String[] args){ int list1[] = {1,3,2,5,7,8,5,6,9,4}; int list2[] = {2,1,4,3,2,1,4,2,0,2}; int list3[] = new int[10]; int a; System.out.print("List1: "); for(a=0; a<10; a++){ System.out.print(list1[a]+" "); } System.out.print("\nList2: "); for(a=0; a<10; a++){ System.out.print(list2[a]+" "); } System.out.print("\nList3: "); for(a=0; a<10; a++){ list3[a]=list1[a]+list2[a]; System.out.print(list3[a]+" "); } int searchValue = Integer.parseInt(JOptionPane.showInputDialog("Input a value to search in List3: ")); int Result = Arrays.binarySearch(list3,searchValue); if(Result!=-3){ System.out.println("\n\nThe value "+searchValue+" is in List3!"); System.out.println("There are "+Result+" of it in List3."); }else{ System.out.println("\n"+searchValue+" cannot be found in List3."); } }}例如,如果我搜索9,则输出将是:值9在List3中!在List3中有4个。位于:list3 [4],list3 [5],list3 [6],list3 [8] 最佳答案 代码中有一些事情需要指出。binary search仅适用于排序列表。Arrays.binarySearch方法的返回值是一个位置,而不是出现位置。二进制搜索仅适用于排序列表。在上面的代码中,列表list1,list2和list3都是未排序的列表。二进制搜索算法要求在执行搜索算法之前必须对执行搜索的列表进行排序。Javadoc中针对Arrays.binarySearch方法指出了这一要求:  使用以下命令在指定的字节数组中搜索指定的值  二进制搜索算法。数组必须排序(如  在进行此调用之前,请先执行sort(int [])方法)。如果没有排序,  结果是不确定的。如果数组包含多个元素  具有指定的值,则不能保证将是哪个  找到了。[增加重点]Arrays.binarySearch方法的返回值是位置,而不是出现次数同样,您对binarySearch方法的期望有问题作品。int Result = Arrays.binarySearch(list3,searchValue);// .. other code ..System.out.println("There are "+Result+" of it in List3.");上面的代码行,即binarySearch方法的返回值,即在其中找到指定元素的位置,正在使用,就好像它是该元素在列表中的出现次数一样。此外,由于巧合而进行编程,使用if变量的Return语句可能正在工作: int Result = Arrays.binarySearch(list3,searchValue); if(Result!=-3){ // What does the -3 signify?? // do something }else{ // do something }根据Arrays.binarySearch javadoc,如果在列表中找到指定的元素,则该方法将返回非零值。它返回的值不是-3并不表示任何特定的返回状态-因此,由于列表以某种方式包含值,因此此代码可能仅在运行,因此该代码将在或list1完全更改。您将要查看list2方法的Javadocs,以查看该方法将为您返回什么。补充说明另外要注意的是,如果希望显示指定元素的出现次数和位置,最好在列表上执行Arrays.binarySearch循环,然后检查每个元素是否为for,这可能更好。彼此。这是一些伪代码:for each element in list: is the element the element we're looking for? if yes, then increment the occurrences counter if yes, then print out the current position关于编码风格的最后说明并且,最后一点是,可以对编码样式进行一些改进,以使内容更易于阅读并符合Java编码标准。在标点符号周围添加一些空格 int list1[] = {1,3,2,5,7,8,5,6,9,4}; for(a=0; a<10; a++){ System.out.print(list1[a]+" "); }如果我们使用英语写作,则在标点符号后添加空格以使其更易于阅读。编码时我们应该做同样的事情,以使代码更易于阅读。在逗号和运算符后添加空格应该使事情看起来更轻松: int list1[] = {1, 3, 2, 5, 7, 8, 5, 6, 9, 4}; for(a = 0; a < 10; a++) { System.out.print(list1[a] + " "); }其次,变量名应以小写字母开头,因此equals变量应类似于Return或更好的returnValue,因为position方法返回找到元素的位置。有关更多信息,请查看Code Conventions for the Java Programming Language。
10-06 11:22