2017.11.27T19_8

ackage com.xdf;

import java.util.Scanner;

public class ArrayDemo01 {

 /**
  * 数组: 
  *    01.在内存中存储一组相同数据类型的集合!
  *    02.数组会在内存中开辟一串连续的空间来保存数据!
  *    03.数组的长度一旦被定义,不能被改变
  *    04.数组的下标最大值=数组的长度-1
  *   
  * 数组中相关概念:
  *    01.定义数组
  *     int  []  nums1; 声明了一个数组     ======》  nums1===》  火车厢 (只能存int类型的数据)
  *     nums1=new int[5];在内存中开辟了5个空间                    =====》   火车厢 中有5个座位
  *     nums1[0]=50;     给数组中的第一个位置赋值               =====》   火车厢中的第一个座位有人了
  *     因为数组是int类型,那么其他的四个空间位置默认值是0!
  *   02.数组的基本要素
  *  
  *     标识符:  nums1(车厢1) ,数组的名称,用去区别不同的数组!
  *         int  num=5;
  *         num==》变量名   我们通过变量名能直接拿到5这个数组!
  *         int  []  nums1;
  *         我们通过nums1只能拿到这个数组整体(车厢)!
  *         之后通过 ‘下标’ 获取具体的‘数组元素’!
  *     数组元素:    数组中真实存放的数据!
  *     元素下标:    对数组元素进行的编号,编号从0开始!
  *     元素类型:   int  数组中每个元素的数据类型 (必须相同)
  *    
  *     需求:
  *        01.获取5名学生的java成绩
  *        02.打印出5名学生的java成绩
  *       
  *       
  *     分析:
  *       01.循环使用for 来获取   5名学生的java成绩
  *       02.怎么保存  5名学生的java成绩
  *       03.难道我们创建5个变量吗?  数组
  *       04.之后打印====》从数组中依次获取所有数据 
  *           从集合中获取所有的数据  =====》遍历
  *      
  */
 public static void main(String[] args) {
  // 声明一个存储学生成绩的数组
  double[] scores = new double[5];
  Scanner input = new Scanner(System.in);
  // scores.length 数组的长度 ==》5
  for (int i = 0; i < scores.length; i++) {
   System.out.println("请您输入第" + (i + 1) + "名同学的java成绩:");
   scores[i] = input.nextDouble(); // 循环获取学生成绩
  }

  System.out.println("*********获取所有学生java成绩************");
  for (int i = 0; i < scores.length; i++) {
   System.out.println(scores[i]);
  }
 }

}

ackage com.xdf;

public class ArrayDemo02 {

 /**
  * 定义数组的方式:
  * 01.
  * // 声明数组
  int[] nums;
  // 给数组开辟空间
  nums = new int[5];
  // 给数组中指定位置赋值
  nums[0] = 10;
  nums[5] = 50; // 数组下标越界
 
   02.  常用的方式
   // 声明数组的同时给数组开辟空间
  int[] nums = new int[5];
  // 给数组中指定位置赋值
  nums[0] = 10;
  
  03.
  // 声明数组的同时给数组开辟空间并赋值
  int[] nums = { 1, 2, 3, 4, 5, 6 };
  System.out.println("数组的长度:" + nums.length);
  
  
  
  错误的方式!
    不允许先声明,之后开辟空间并赋值
  //声明数组
   int []  nums;
  //开辟空间并赋值
   nums = { 1, 2, 3, 4, 5, 6 };
  
  */
 public static void main(String[] args) {

 }
}

package com.xdf;

import java.util.Scanner;

public class ArrayDemo03 {

 /**
  * 需求:
  *     现在有一个数组 存储的值是 {20,40,10,60,100,90}
  *    01.循环遍历出数组中所有的数据!
  *    02.求数组中所有数据之和!
  *    03.让用户输入一个值,之后判断用户输入的值,是否在数组中!
  */
 public static void main(String[] args) {

  // 创建一个数据保存数据
  int[] nums = { 20, 40, 10, 60, 100, 90 };

  // 定义一个变量保存所有数据之和
  int sum = 0;

  // 01.遍历所有数据
  for (int i = 0; i < nums.length; i++) {
   System.out.println(nums[i]);
   sum += nums[i]; // 02.求和
  }

  System.out.println("所有数据之和是:" + sum);
  // 03.判断用户的输入
  Scanner input = new Scanner(System.in);
  System.out.println("请您输入一个数字:");
  int num = input.nextInt();
  // 定义一个标记
  boolean flag = false;

  for (int i = 0; i < nums.length; i++) { // 循环比较
   if (num == nums[i]) {
    flag = true;
    break;
   }
  }

  // 根据标记做后续的操作
  if (flag) {
   System.out.println("找到了");
  } else {
   System.out.println("没找到");
  }

 }

}

package com.xdf;

public class BuddleSort04 {

 /**
  * 冒泡排序
  *  实现数值类型数组中的数据从小到大排列! 升序排列!
  * 
  *  双重循环:  外层循环执行一次,内层循环执行一遍!
  * 
  * 
  *  for (int i = 1; i <= 5; i++) {
   System.out.println("外层循环i的值===============》" + i);
   for (int j = 1; j <= 5; j++) {
    System.out.println("内层循环j的值===》" + j);
   }
  }
  *  分析:
  *    01.根据数组的长度 我们能断定 比较几轮?
  *    02.但是每轮中比较几次???
  *      使用外层循环控制 比较几轮!            ======》   数组长度-1
  *      使用内层循环控制 一轮比较几次!
  *    03.真正比较数值大小的是 内层循环
  *    04.内层循环中比较的时候使用等量转换
  *    05. 等量转换的条件 是   下一个值 (j+1)小于当前值  j 
  *   
  *   
  *  口诀:
  *    两两相比小靠前,
  *    外层循环N-1
  *    内层循环N-1-i
  *    等量转换 
  *   
  */
 public static void main(String[] args) {
  // 声明数组
  int nums[] = { 15, 50, 12, 8, 90, 75, 2 };

  // 冒泡排序
  for (int i = 0; i < nums.length - 1; i++) { // 外层循环 控制几轮'
   System.out.println("第" + (i + 1) + "轮开始比较");
   for (int j = 0; j < nums.length - i - 1; j++) { // 内层循环 控制一轮几次
    if (nums[j + 1] < nums[j]) { // 等量转换
     int temp = nums[j];
     nums[j] = nums[j + 1];
     nums[j + 1] = temp;
    }
   }
  }

  // 遍历数组
  for (int i = 0; i < nums.length; i++) {
   System.out.println(nums[i]);
  }

 }
}

package com.xdf;

import java.util.Scanner;

public class InsertDemo05 {

 /**
  *插入算法:
  */
 public static void main(String[] args) {

  // 先定义一个升序数组 预留一个位置
  int nums[] = { 5, 15, 50, 70, 80, 0 };
  // 获取用户输入的数值
  Scanner input = new Scanner(System.in);
  System.out.println("请您输入一个数字:");
  int num = input.nextInt();
  // 定义一个变量用来接收插入数字的下标
  int index = nums.length - 1;
  // 循环和数组中的每一个元素进行比较
  for (int i = 0; i < nums.length; i++) {
   if (num < nums[i]) { // 找到了插入数字的下标
    index = i;
    break;
   }
  }
  System.out.println("插入数字的下标===>" + index);

  // 循环后移
  for (int i = nums.length - 1; i > index; i--) {
   nums[i] = nums[i - 1];
  }
  // 插入数字
  nums[index] = num;
 }

}

package com.xdf;

import java.util.Arrays;

public class ArraysDemo06 {

 /**
  * Arrays 操作数组的工具类!
  *  类中提供了很多方法!
  *  我们可以直接通过类名直接访问!
  */
 public static void main(String[] args) {

  // 创建数组
  int[] nums = { 10, 50, 30, 20, 80, 70 };
  /**
   *  增强for循环
   * 
   *  int:需要遍历集合的数据类型
   *  num:变量 我们可以自定义
   *  nums:需要遍历的集合
   */
  System.out.println("***********排序之前***********");
  for (int num : nums) {
   System.out.println(num);
  }
  // 01.排序
  Arrays.sort(nums);
  System.out.println("***********排序之后***********");
  for (int num : nums) {
   System.out.println(num);
  }
  // 02.把数组转换成一个字符串
  String result = Arrays.toString(nums);
  System.out.println("数组转换成字符串之后======》" + result);
  // 03.将数组中所有的元素改变成同一个值
  Arrays.fill(nums, 100);
  result = Arrays.toString(nums);
  System.out.println("数组元素替换之后======》" + result);
  // 04.复制数组 形成新的数组
  int[] newNums = Arrays.copyOf(nums, 10);
  result = Arrays.toString(newNums);
  System.out.println("数组复制之后======》" + result);
  // 05. 查询元素在数组中存在的位置 前提 必须先排序
  int[] nums2 = { 10, 50, 30, 20, 80, 70 };
  Arrays.sort(nums2);// 先排序
  int index = Arrays.binarySearch(nums2, 80);
  System.out.println("80存在的位置:" + index);
  // 06.把String类型的字符串转换成 一个 char类型的数据
  String hello = "hello BigData";
  char[] array = hello.toCharArray();
  for (char i : array) {
   System.out.println(i);
  }
 }

}

package com.xdf;

public class ExamDemo07 {

 /**
  * 招租热线
  *
  * String phone = "";
  for (int i = 0; i < nums.length; i++) {
   phone += phoneNums[nums[i]];
  }
  System.out.println(phone);
  
  */
 public static void main(String[] args) {

  // 电话号码中的数字
  int[] phoneNums = { 0, 4, 1, 3, 5, 9, 8, 7 };
  // 每个号码对应的下标
  int[] nums = { 2, 4, 7, 4, 3, 0, 1, 5, 5, 5, 6 };
  // 求 手机号码
  String phone = "";
  for (int i : nums) {
   phone += phoneNums[i];
  }
  System.out.println(phone);
 }

}

posted @ 2017-11-27 23:21  水墨&丹青  阅读(88)  评论(0编辑  收藏  举报