我把题做出来的,可是那个最后的return -1总感觉很别扭,能不能用一种办法,第二个函数在for循环是return i在外层结束时不要return -1,可不可以让他返回:找不到该数据。?还有觉得代码还有算法是不是不够精简求优化
//数组元素查找(查找指定元素第一次在数组中出现的索引)
import java.util.*;
public class Array_BrowseIndexes{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入想要查找的数值");
int a = sc.nextInt();
int result = browseIndexes(a);
System.out.println("出现的索引"+result);
}
public static int browseIndexes(int a){
int arr[] = new int[]{3,4,3,5,8,3,5,6};
for(int i=0;i<=arr.length-1;i++){
if(arr[i] == a){
return i;
}
}
return -1;
}
}
------解决思路----------------------
没什么别扭
因为需要你的功能需要
1是找到了返回索引,2是找不到要返回一个状态
要不然就抛出个异常
//数组元素查找(查找指定元素第一次在数组中出现的索引)
import java.util.Scanner;
public class Array_BrowseIndexes {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入想要查找的数值");
int a = sc.nextInt();
int result ;
try {
result = browseIndexes(a);
System.out.println("出现的索引" + result);
} catch (Exception e) {
System.out.println("找不到该数据!");
}
}
public static int browseIndexes(int a) throws Exception {
int arr[] = new int[] { 3, 4, 3, 5, 8, 3, 5, 6 };
for (int i = 0; i <= arr.length - 1; i++) {
if (arr[i] == a) {
return i;
}
}
throw new Exception();
}
}
------解决思路----------------------
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
int arr[] = new int[]{3,4,3,5,8,3,5,6};
//数组元素很多的时候推荐转换成arraylist,使用里面的valueof()方法
int result = Arrays.binarySearch(arr,n);
if(result==-1){
System.out.println(result);
}else{
System.out.println("没有找到!!");
}
}
------解决思路----------------------
把if里面的条件换成result>=0
------解决思路----------------------
是强迫症看到-1不爽吗。。你既然声明了方法要有返回值,然后方法内又有判断,那程序执行时就有两个分支,每个分支内就都得有返回值,你看-1不爽可以设任意值,只要你喜欢,只要不影响你需要实现的功能即可。
------解决思路----------------------
二分查找要求数组有序
------解决思路----------------------
public static int browseIndexes(int a){
int arr[] = new int[]{3,4,3,5,8,3,5,6};
for(int i=0;i<=arr.length-1;i++){
if(arr[i] == a){
return i;
}
}
return "找不到该数据";
}
------解决思路----------------------
略作修改,满足你返回的愿望。
算法倒是没什么好修改的了。。
import java.util.*;
public class Array_BrowseIndexes {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入想要查找的数值: ");
System.out.println(browseIndexes(sc.nextInt()));
sc.close(); // 此处应有关闭
}
public static String browseIndexes(int a) {
int arr[] = new int[] { 3, 4, 3, 5, 8, 3, 5, 6 };
for (int i = 0; i < arr.length; i++) {
if (arr[i] == a) {
return "出现的索引: " + i;
}
}
return "找不到该数据: " + a;
}
}
------解决思路----------------------
没考虑到,那就用indexof()方法解决,都快忘光了

------解决思路----------------------
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入想要查找的数值");
int arr[] = new int[]{3,4,3,5,8,3,5,6};
int a = sc.nextInt();
Arrays.sort(arr);
int index = Arrays.binarySearch(arr, a);
String msg = index>=0?"首次出现的索引为"+index:"找不到数据!";
System.out.println(msg);
}