Java数组全攻略(二)

原创 2018年01月04日 20:25:40

例题分析

1.传入函数内一个值,找到其对应的数组角标

public class Rewriter {
    public static int fun(int num) {
        int[] a =new int[] {1,2,3,4,5};
        for (int i = 0; i < a.length; i++) {
            if (a[i] == num) {
                return i;
            }
        }
        return -1;      //当传入的数值不在数组时,返回 -1
    }
    public static void main(String[] args) {    
        int num =fun(4);
        System.out.println(num);
    }
}
输出 :3

2.利用同一个数组让其内元素反转

public class Rewriter {
    public static void fun() {
        int[] a =new int[] { 1, 2, 3, 4, 5};
        for (int i = 0; i < a.length/2; i++) {
            int temp = a[a.length-1-i];           // 利用中间值重新分配两个数
            a[a.length -1-i] = a[i];
            a[i] = temp;
        }
        System.out.println(Arrays.toString(a));  // 利用Arrays中的toString方法,遍历a数组,让其以字符串形式输出
    }

    public static void main(String[] args) {            
        fun();
    }
}
输出:  [5, 4, 3, 2, 1]

3.冒泡循环

相邻两个数进行对比, 交换两个数的位置

public class Rewriter {
    public static void main(String[] args) {            
        int[] a = new int[] {5,4,3,2,1};
        for (int i = 0; i < a.length - 1; i++) {       
        //相邻两个数进行比较 一共会比较 a.length -1 次
            for (int j = 0; j < a.length - 1 - i; j++) {    
            //内循环比每趟的次数 每趟的次数都会比上一趟 -1    
                if (a[j] > a[j+1]) {
                    int temp = a[j+1];
                    a[j+1] = a[j];
                    a[j] = temp;
                }
            }
        }System.out.println(Arrays.toString(a));
    }
}
输出: [1, 2, 3, 4, 5]

4.选择排序

选择一个数和接下来的每一个数比较 交换位置 以此类推

public class Rewriter {
    public static void main(String[] args) {            
        int[] a = new int[] {5,4,3,2,1};
        for (int i = 0; i < a.length - 1; i++) {                
        //第一次 首选数和后面所有数依次比较 循环4次 第二次 3次
            for (int j = i+1; j < a.length ; j++) {  
            //第一趟比较了4次 第二趟比较了3次             
                if (a[i] > a[j]) {
                    int temp = a[j];
                    a[j] = a[i];
                    a[i] = temp;
                }
            }
        }System.out.println(Arrays.toString(a));
    }
}

5.查找游戏

随机生成一个数[1,100], 用户输入一个数,如果比这个数大 输出大了,让用户重新输出,直到输入正确为止

public class Rewriter {
    public static void main(String[] args) {    
        System.out.println("请输入一个1~100之内的数");
        Scanner scanner = new Scanner(System.in);
        int num = (int) (Math.random()*100+1);      
        while (true) {
            int n = scanner.nextInt();
            if (n > num) {
                System.out.println("你输入的数大了");
            }else if (n < num) {
                System.out.println("你输入的数小了");
            }else {
                System.out.println("正确");
                break;
            }
        }   
    }
}

6.折半查找

在一个有序数组中,输入一个元素值或者角标 可以查找到对应的角标或值

public class Rewriter {
    public static void fun(int[] a,int b) { 
        //传入数组 和 传入需要查询角标的元素值
        int max = a.length - 1;     
        //最大角标
        int min = 0;                
        //最小角标
        int mid = (max + min) / 2;  
        //中间角标
        while (b != a[mid]) {
            if (b > a[mid]) {   
                //当需要查找的角标比中间值大
                min = mid + 1;
            }else if (b < a[mid]) { 
                //当需要查找的角标比中间值小
                max = mid -1;
            }
            mid = (max + min) / 2;  
            //重新定义中间值
            if (max < min) {        
                //当最大角标 小于或等于最小角标说明这个值不存在
                mid = -1;
            }
        }
        System.out.println(mid);
    }

    public static void main(String[] args) {    
        int[] a = new int[] {1,5,10,15,20,25,30,35};
        fun(a, 30);
    }
}

codecombat之边远地区的森林23-30关及地牢40\41关代码分享

codecombat中国游戏网址:http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • hqj_email
  • hqj_email
  • 2015年08月26日 20:45
  • 4288

codecombat之边远地区的森林12-22关及地牢39关代码分享

codecombat中国游戏网址:http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • hqj_email
  • hqj_email
  • 2015年08月24日 19:42
  • 4367

codecombat之边远地区的森林1-11关及地牢38关代码分享

codecombat中国游戏网址:http://www.codecombat.cn/ 所有代码为javascript代码分享 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • hqj_email
  • hqj_email
  • 2015年08月23日 19:02
  • 5268

Java数组全攻略(一)

数组 数组的写法 变量,数组在内存中的表现形式
  • ForeverNagisa
  • ForeverNagisa
  • 2018年01月03日 20:50
  • 68

Java IO 全攻略--之二

3.4 字节流与字符流        从上面我们可以看出IO中的字节流是极其复杂的,存在大量的类,到目前为止还没有真正使用它们,使用它们应该也是极其复杂的吧!JDK1.1后Sun对IO库进行了重...
  • gaoqinqing
  • gaoqinqing
  • 2011年12月27日 13:19
  • 147

《Java程序员职场全攻略 从小工到专家》 - 书摘精要

(前言) 学习招式在次,提升内力才是最主要的; (P10) 选择一门编程语言,只是入门的途径。过分依赖编程语言,只会让自己成为代码高手,而不是开发大牛,要知道编程语言只是一种工...
  • GATTACA2011
  • GATTACA2011
  • 2014年03月13日 10:39
  • 550

微信公众帐号开发教程第13篇-图文消息全攻略 (Java版)

引言及内容概要 已经有几位读者抱怨“柳峰只用到文本消息作为示例,从来不提图文消息,都不知道图文消息该如何使用”,好吧,我错了,原本以为把基础API封装完、框架搭建好,再给出一个文本消息的使用示例,大...
  • u010040590
  • u010040590
  • 2013年10月31日 15:16
  • 1255

Log4j实现对Java日志的配置全攻略

1. 配置文件 Log4J配置文件的基本格式如下: #配置根Logger log4j.rootLogger = [ level ] , appenderName1 , append...
  • wangyang1354
  • wangyang1354
  • 2013年08月02日 09:37
  • 4727

Java打印程序设计全攻略

转载于:http://www.pcbookcn.com/article/2370.htm   前言   在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Java提供的打印功能一直...
  • qincidong
  • qincidong
  • 2013年03月28日 19:43
  • 518

java winform开发之JTable全攻略

列表在任何一门开发语言中都占有非常重要的地位,在.Net中有GridView,在extjs中有GridPanel。。。,而在java Swing中,它的名字叫JTable。这两天在研究JTable的...
  • one_and_only4711
  • one_and_only4711
  • 2011年06月17日 23:48
  • 4329
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java数组全攻略(二)
举报原因:
原因补充:

(最多只允许输入30个字)