当前位置: 代码迷 >> J2SE >> 这道练习题如何把return -1干掉,求解,最好在帮小弟我优化下代码的算法
  详细解决方案

这道练习题如何把return -1干掉,求解,最好在帮小弟我优化下代码的算法

热度:191   发布时间:2016-04-23 19:42:49.0
这道练习题怎么把return -1干掉,求解,最好在帮我优化下代码的算法
        我把题做出来的,可是那个最后的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("没有找到!!");
}
}
------解决思路----------------------
引用:
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 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("没有找到!!");
}
}

二分查找要求数组有序
------解决思路----------------------

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;
}
}

------解决思路----------------------
引用:
Quote: 引用:

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("没有找到!!");
}
}

二分查找要求数组有序

没考虑到,那就用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);
 }
  相关解决方案