A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我觉得我的代码木有问题,但是在求最值得时候总会出错,求出来的值并不是最值,求大神指导

import java.util.Scanner;
class Noname1 {
         public static void main(String[] args)   {
               
                int[] arr=creatArray();
                viewShow(arr);
               
         }
         //创建数组
         public static int[] creatArray() {
               
                 Scanner sc=new Scanner(System.in);
                 System.out.println("请输入数组的长度:");
                int len=sc.nextInt();
                int[] arr=new int[len];
                for(int i=0;i<len;i++){
                        System.out.println("请输入数组的第"+(i+1)+"数据:");
                        arr[i]=sc.nextInt();
                }
               
                return arr;
          }
          //主界面
         public static void viewShow(int[] arr) {

                 Scanner sc=new Scanner(System.in);
                 System.out.println();
                 System.out.println("主界面:");
                System.out.println("-----------------------------");
                System.out.println("1.显示数组;");
                System.out.println("2.查找数据;");
                System.out.println("3.翻转数组;");
                System.out.println("4.数组最值;");
                System.out.println("5.创建数组:");
                System.out.println("886.退出;");
                System.out.println("-----------------------------");
                System.out.println("请输入你需要的选项: ");

                int choose=sc.nextInt();
                switch(choose) {
                        case 1:
                                System.out.println("您输入的数组为:");
                                showArray(arr);
                                viewShow(arr);
                        case 2:
                                System.out.println("请输入您要查找的数据:");
                                int num=sc.nextInt();
                                seachNum(num,arr);
                                viewShow(arr);
                        case 3:
                                System.out.println("反转后的数组为:");
                                turnArray(arr);
                                viewShow(arr);
                        case 4:
                                System.out.println("需要查找:1 最大值;2 最小值;3 返回");
                                int c=sc.nextInt();
                                if(c==1) {
                                        System.out.println("您查找的最大值为:");
                                        int max=max(arr);
                                        System.out.println(max);
                                 }else if(c==2) {
                                        System.out.println("您查找的最小值为:");
                                        int min=min(arr);
                                        System.out.println(min);
                                  }else if(c==3) {
                                        viewShow(arr);
                                   } else {
                                        System.out.println("您输入有误请返回重新输入");
                                  }       
                                 viewShow(arr);
                        case 5:
                                        main(int[] arr);
                        case 886:
                                break;
                        default :
                                System.out.println("您输入有误请--------跳转返回");
                                viewShow(arr);

                 }
          }

          //显示数组方法
        public static void showArray(int[] arr)  {
                System.out.print("[  ");
                for (int i =0;i<arr.length ;i++ )  {
                        System.out.print(arr[i]+"\t");
                }
                System.out.print("]");
                System.out.println();
        }

        //查找数据方法
         public static void seachNum(int num,int[] arr) {
                for (int i=0; i<arr.length;i++) {
                        if(num==arr[i]) {
                                System.out.println("您查找的数据的下标为:"+i);
                        }else {
                                System.out.println("您查找的数据不存在");
                         }
                }
          }

          //反转数组方法
          public static void turnArray(int[] arr) {
                  int[] b=arr;
                for(int i=0;i<b.length/2;i++) {
                        int temp=b[i];
                        b[i]=b[arr.length-1-i];
                        b[arr.length-1-i]=temp;
                 }
                showArray(b);
           }

           //最大值方法
          public static int max(int[] arr) {
                        int max=arr[0];
                for(int i=1;i<arr.length;i++) {
                       
                        max=max>arr[i]?max:arr[i];
                        return max;
            }
                return -1;
          }

          //最小值方法
          public static int min(int[] arr) {
                 int min=arr[0];
                for(int i=1;i<arr.length;i++){
                       
                        min=min<arr[i]?min:arr[i];
                        return min;
                 }
                 return -1;
          }

}

2 个回复

倒序浏览
  return max;不应该放在循环里,你这样写每次返回的都是第一个和第二个的中的最大值,后面的元素没办法比较
回复 使用道具 举报
public static int getMax(int[] arr){
        int max = arr[0];
        for(int x = 0;x < arr.length;x++){
                if(arr[x]>max){
                        max = arr[x];
                }
        }
        return max;
}
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马