1. 数组参数和返回值
数组作为参数和作为返回值与之前的使用方式一致。
package com.qfedu.test1;
import java.util.Scanner;
/**
* 需求:
* 1.编写方法实现 让用户输入5门成绩 并且返回这些成绩
*
* 2.编写方法根据用户传入的成绩数组 遍历成绩 并且打印
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
double[] scores = inputScore();
printScore(scores);
}
public static double[] inputScore(){
Scanner input = new Scanner(System.in);
double [] scores = new double[5];
for (int i = 0; i < 5; i++) {
System.out.println("请输入第"+ (i + 1) +"个人的成绩");
double score = input.nextDouble();
scores[i] = score;
}
return scores;
}
public static void printScore(double [] scores) {
for (int i = 0; i < scores.length; i++) {
System.out.println("第" + (i + 1)+"个人的成绩是:" + scores[i]);
}
}
}
2. 可变长参数
可变长参数:可接收多个同类型实参,个数不限(0个或者N个),使用方式与数组相同
语法:数据类型... 形参名
要求:必须定义在形参列表的最后,且只能有一个。
package com.qfedu.test1;
/**
* 可变长参数:可接收多个同类型实参,个数不限(0个或者N个),使用方式与数组相同
* 语法:数据类型... 形参名
* 要求:必须定义在形参列表的最后,且只能有一个。
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int [] nums = {1,2,3};
arrayPrint(nums);
printNum(1,2,3,4,5,6);
}
public static void printNum(int...nums) {
for(int i = 0;i < nums.length;i++) {
System.out.print("循环体中打印数字:" + nums[i] + "\t");
}
System.out.println();
System.out.println("printNum方法执行完毕");
}
public static void arrayPrint(int [] nums) {
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}
3. 排序
3.1 冒泡排序
冒泡排序:相邻的两个数值比较大小,互换位置。
外层循环控制比较的轮数 轮数永远是长度-1 n -1
内层循环控制每一轮比较的次数 最多的一次是长度-1 后续每轮依次递减1 n - 1 - i
package com.qfedu.test2;
import java.util.Arrays;
/**
* 排序算法:冒泡排序,选择排序,归并排序,桶排序,猴子排序,快速排序,二叉树排序
* 冒泡排序:相邻的两个数值比较大小,互换位置。
*
* 外层循环控制比较的轮数 轮数永远是长度-1 n -1
* 内层循环控制每一轮比较的次数 最多的一次是长度-1 后续每轮依次递减1 n - 1 - i
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = a;
a = b;
b = c;
System.out.println(a);
System.out.println(b);
int [] nums = {442,12,0,3,69,55,231,147,5};
for (int i = 0; i < nums.length - 1; i++) {// 外层循环 控制比较的轮数 长度 - 1
for(int j = 0;j < nums.length - 1 - i;j++) { // 内层循环 控制每一轮比较的次数 递减的
if(nums[j] > nums[j + 1]){
int temp = nums[j];
nums[j] = nums[j + 1];
nums[j + 1] = temp;
}
}
}
System.out.println(Arrays.toString(nums));
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + "\t");
}
}
}
3.2 选择排序
选择排序:固定值与其他值依次比较大小,互换位置。
回顾冒泡排序存在哪些问题:大拿 160 广坤 175 赵四 180
选择排序
外层循环 控制比较的数A 外层循环 n - 1
内层循环 控制比较的数B 内层循环 初始值 i + 1
package com.qfedu.test3;
import java.util.Arrays;
/**
* 选择排序:固定值与其他值依次比较大小,互换位置。
* 回顾冒泡排序存在哪些问题:大拿 160 广坤 175 赵四 180
*
* 选择排序
* 外层循环 控制比较的数A
* 内层循环 控制比较的数B
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
int [] nums = {-1,442,12,0,3,69,55,231,147,5};
int count = 0;
for(int i = 0;i < nums.length -1;i++) {
int index = i;
for(int j = i + 1;j < nums.length;j++) {
if(nums[index] < nums[j]) {
index = j;
}
}
if(index != i) {
int temp = nums[i];
nums[i] = nums[index];
nums[index] = temp;
count++;
}
System.out.println("第"+(i + 1)+"轮比较完数列的顺序:" +Arrays.toString(nums));
}
System.out.println(Arrays.toString(nums));
System.out.println("一共交换了"+ count +"次位置");
}
}
3.3 JDK排序
JDK提供的排序 Arrays.sort(数组名) 只支持升序
package com.qfedu.test4;
import java.util.Arrays;
/**
* JDK提供的排序 Arrays.sort(数组名) 只支持升序
* @author WHD
*
*/
public class Test1 {
public static void main(String[] args) {
int [] nums = {-1,442,12,0,3,69,55,231,147,5};
Arrays.sort(nums);
System.out.println(Arrays.toString(nums));
}
}
4. 二维数组
二维数组,数组中的元素 还是数组
package com.qfedu.test4;
/**
* 二维数组,数组中的元素 还是数组
* @author WHD
*
*/
public class Test2 {
public static void main(String[] args) {
int [] nums1 = {1,2,3,4,5};
int [][] nums2 = {{1,2,3},{4,5},{6,7,8},{11,22,33,44,55}};
System.out.println(nums2[0]);
System.out.println(nums2[0][0]);
System.out.println(nums2[0][1]);
System.out.println(nums2[0][2]);
System.out.println("-------------------------------------");
System.out.println(nums2[1][0]);
System.out.println(nums2[1][1]);
System.out.println("-------------------------------------");
System.out.println(nums2[2][0]);
System.out.println(nums2[2][1]);
System.out.println(nums2[2][2]);
}
}
package com.qfedu.test4;
public class Test3 {
public static void main(String[] args) {
int [][] nums1 = new int[3][];
nums1[0] = new int[5];
nums1[0][0] = 11;
nums1[0][1] = 12;
nums1[0][2] = 13;
nums1[0][3] = 14;
nums1[0][4] = 15;
nums1[1] = new int[3];
nums1[1][0] = 11;
nums1[1][1] = 22;
nums1[1][2] = 33;
nums1[2] = new int[2];
nums1[2][0] = 55;
nums1[2][1] = 66;
for (int i = 0; i < nums1.length; i++) {
// System.out.println(nums1[i]);
for(int j =0;j < nums1[i].length;j++) {
System.out.print(nums1[i][j] + "\t");
}
System.out.println("-----------------------------");
}
}
}