Java基础第四天学习

Java基础语法

数组作为方法返回值

数组作为方法返回值使用 : 方法定义上,在返回值类型这个位置上,写数组

方法的调用者,在调用方法后,接收方法的返回值,可以使用数组来接收

返回的数组也是内存的地址

public static void main(String[] args) {
    //调用方法getArray(),接收方法的返回值
    //方法返回的是数组,数组接收 , 收到的也是地址
    int[] array = getArray();
    System.out.println(array[0]);
}

/*
* 定义方法,返回值类型 是数组
* 方法体中 : 必须有return语句返回,返回数组
*/
public static int[] getArray() {
    //创建数组
    int[] arr = {1,2,3,4,5,6};
    //返回定义好的数组
    return arr;  // return 返回数组,返回的是数组内存中地址
}

数组的对称性判断

数组的对称判断 : 在一个数组中, 最远端的元素是相等的,依次类推

int[] arr = {1,2,3,4,5,4,3,2,1}

需求 : 已知数组,判断是否是对称

	public static void main(String[] args) {
		 int[] arr = {1,2,3,4,5,4,3,2,1};
		 //调用方法,判断数组是否对称
		 //传递数组,获取方法的返回值
		 boolean bool = isDuiChen(arr);
		 System.out.println(bool);
	}
	
	/*
	 *  需求 : 已知数组,判断是否是对称
	 *  方法返回值类型 : 运行后的结果数据类型  布尔
	 *  方法的参数列表 : 参数是方法中的未知数据, 数组
	 */
	public static boolean isDuiChen(int[] arr) {
		//方法体中,实现判断数组的对称性
		//两个变量,保存数组的最小索引和最大索引 (小索引++ , 大索引--)
		for(int min = 0 , max  = arr.length - 1; min <= max ; min++,max--) {
			//比较数组最远端的元素,是否相等
			if(arr[min] != arr[max]) {
				//判定数组不对称,其他计算不在需要
				return false;
			}
		}
		//将数组的所有元素全部比较完成,for循环结束
		//没有不相等的,就是对称数组,返回true
		return true;
	}

字符出现的次数统计

需求 : 键盘输入字符串,可以任意

​ 计算出,这个字符串中,大写字母有几个,小写字母有几个,数字有几个,其他字符有几个

例子 : 键盘数组字符串 abcWA12WE!@

​ 程序的输出结果 : 小写字母3个, 大写字母4个,数字2个,其他字符2个

分析 :

  • 输入的数据是字符串, 需要操作字符串中每个字符, 字符串转成数组

    • 未来的方法 : 字符串方法 toCharArray() 字符串转成 字符数组 char[]
  • 对字符数组遍历

    • 遍历的过程中,判断每个字符属于什么??
    • 判断字符是大写字母 ASCII 65-90
    • 判断字符是小写字母 ASCII 97-122
    • 判断字符是数字 ASCII 48-57
  • 创建4个变量,作用计数器

    • 字符满足条件, 计数器++
    public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		String str = sc.nextLine();
    		//调用统计字符出现次数的方法
    		printCount(str);
    	}
    	
    	/*
    	 * 定义方法,实现字符出现次数的统计
    	 * 方法返回值 : 没有返回值,直接输出结果 void
    	 * 方法参数 :  方法计算的未知数, 字符串
    	 * 实现步骤 : 
    	 *   1 : 接收到字符串,转成char[]数组
    	 *   2 : 创建4个变量,计数器使用 int
    	 *   3 : 遍历char[]数组,取出每个元素
    	 *     4 : ASCII码判断,决定是否是大写,小写,数字,或者是其他字符
    	 *     5 : 满足条件,计数器++
    	 *   6 : 所有的字符数组遍历完成,计算结束了,输出计算结果 
    	 *  
    	 */
    	public static void printCount(String str) {
    		//	1 : 接收到字符串,转成char[]数组
    		char[] ch = str.toCharArray();
    		//2 : 创建4个变量,计数器使用 int
    		int upperCount = 0; //大写字母计数器
    		int lowerCount = 0; //小写字母计数器
    		int digitCount = 0; //数字计数器
    		int otherCount = 0; //其他字符计数器
    		// 3 : 遍历char[]数组,取出每个元素
    		for(int i = 0 ; i < ch.length ; i++) {
    			//取出数组的元素,赋变量
    			char c = ch[i];
    			//判断c是否是大写字母
    			if(c >= 'A' && c <= 'Z') {
    				upperCount++;
    			}
    			//判断c是否是小写字母
    			else if(c >= 'a' && c <= 'z') {
    				lowerCount++;
    			}
    			//判断是否是数字
    			else if(c >= '0' && c <= '9') {
    				digitCount++;
    			}else {
    				//其他字符
    				otherCount++;
    			}
    		}
    		// 6 : 所有的字符数组遍历完成,计算结束了,输出计算结果 
    		System.out.println("大写字母出现: "+ upperCount +"次");
    		System.out.println("小写字母出现: "+ lowerCount +"次");
    		System.out.println("数字出现: "+ digitCount +"次");
    		System.out.println("其他字符出现: "+ otherCount +"次");
    	}
    

冒泡排序

数组排序 : 默认情况都是升序,从小到大排列

数组 : 原始形态 {5,2,1,4,6} == 排序 {1,2,4,5,6}

排序 : 数组元素的比较,位置交换

冒泡排序 : 数组的相邻元素,比较换位

public static void main(String[] args) {
		int[] arr = {2,6,5,-1,-2,3,1};
		//调用排序方法
		bubbleSort(arr);  //传递数组的地址
	}
	
	/*
	 * 定义方法实现数组冒泡排序
	 * 方法有返回值吗  :  返回数组
	 * 方法有参数吗 : 要排序哪个数组 
	 */
	public static void bubbleSort(int[] arr) {  // arr接收到的也是地址
		//外循环控制行数
		for(int i = 0 ; i < arr.length - 1; i++) {
			//内循环,控制比较换位的次数, 一次递减
			// i变量每次++   length-i 越来越小
			
			//j=0 j<3 j++  j变量最大到2
			for(int j = 0 ; j < arr.length - i - 1;j++) {
				//相邻元素比较换位
				if(arr[j] > arr[j+1]) {
					int temp = arr[j];  //保存j索引元素
					arr[j] = arr[j+1] ; //j+1索引元素,赋值到j
					arr[j+1] = temp; //临时变量的值,赋值到j+1
				}
			}
		}
		//排序结束,遍历
		for(int i = 0 ; i < arr.length;i++) {
			System.out.println(arr[i]);
		}
	}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ptWRmluo-1594381437625)(images/数组排序.jpg)]

斐波那契数列

黄金分割 : 1 1 2 3 5 8 … 从第三个数开始,每个数都是前2项的数字之和

计算出,第12位是多少

数组和方法

public static void main(String[] args) {
		int[] arr = new int[12];
		//数组元素赋值
		arr[0] = 1;
		arr[1] = 1;
		//从2索引开始遍历
		for(int i = 2; i < arr.length ; i++) {
			//数组元素的赋值
			arr[i] = arr[i-1] +  arr[i-2];
		}
		//数组遍历
		for(int i = 0 ; i < arr.length ;i++) {
			System.out.println(arr[i]);
		}
	}

裁判评分

实现裁判评分功能 : 裁判数量是固定 (6个裁判)

每个裁判为运动员评分, 去掉一个最高分,去掉一个最低分, 剩余的4个分数求平均值

实现技术数组和方法.

6个裁判,分数键盘输入, 存储在数组里面,在输入的过程中,实现对数组元素的赋值

去掉一个最高分 : 计算出哪个是最高的 最大值获取

所有的分数,求和 - 最大值 - 最小值

public static void main(String[] args) {
		//创建长度为6的数组
		int[] array = new int[6];
		//调用保存数据的方法
		saveData(array);
		//调用方法,实现遍历
		printArray(array);
		
		//调用方法,获取最大值
		int max = getMax(array);
		System.out.println("最大值 : "+max);
		
		//调用方法,获取最大值
		int min = getMin(array);
		System.out.println("最大值 : "+min);
		
		//调用获取平均成绩的方法
		int avg =getAvg(array, max, min);
		System.out.println("最后的成绩是 :" + avg);
	}
	
	
	/*
	 * 计算出,去掉最大,和最小值后的平均值
	 * 方法是否有返回值 : int
	 * 方法是否有参数 : 数组, 最大值,最小值
	 */
	public static int getAvg(int[] array,int max,int min) {
		//数组数据的求和,定义变量,保存和值
		int sum = 0;
		for(int i = 0 ; i < array.length;i++) {
			sum = sum + array[i];
		}
		//和值,去掉最大和最小
		return (sum - max - min) / (array.length - 2);
	}
	
	
	/*
	 * 实现获取数组的最小值
	 * 方法是否有返回值 : int
	 * 方法是否有参数 : 数组
	 */
	public static int getMin(int[] array) {
		//定义变量,保存数组0索引元素
		int min = array[0];
		for(int i = 0 ; i < array.length ; i++) {
			if(array[i] < min) {
				min = array[i];
			}
		}
		return min;
	}
	
	
	/*
	 * 实现获取数组的最大值
	 * 方法是否有返回值 : int
	 * 方法是否有参数 : 数组
	 */
	public static int getMax(int[] array) {
		//定义变量,保存数组0索引元素
		int max = array[0];
		for(int i = 0 ; i < array.length ; i++) {
			if(array[i] > max) {
				max = array[i];
			}
		}
		return max;
	}
	
	
	/*
	 * 定义方法,录入6个数据
	 * 分别存储在数组中
	 * 方法是否有返回值 : 无
	 * 方法是否有参数 : 长度为6的数组
	 */
	public static void saveData(int[] array) {
		Scanner sc = new Scanner(System.in);
		//循环遍历数组
		for(int i = 0 ; i < array.length ; i++) {
			System.out.println("请输入第" + (i+1) +"个成绩");
			//输入的整数评分,存储在数组中
			array[i] = sc.nextInt();
		}
	}
	
	/*
	 * 定义方法,遍历数组
	 */
	public static void printArray(int[] array) {
		for(int i = 0 ; i < array.length ; i++) {
			System.out.println(array[i]);
		}
	}

随机数类

随机产生一个数字,随机数. 伪随机数.

计算机,产生随机数,是根据一个计算方法得来的

public static void main(String[] args) {
		Random ran = new Random();
		//ran.nextInt(100); 产生随机数,范围是0-100 可能是0,不会到达100
		for(int i = 0 ; i < 20 ;i++) {
		   int num= ran.nextInt(100);
		   System.out.println(num);
		}
	}

Eclipse进阶

快捷键

  • Ctrl + 1 意见提示 (工具提出意见) ,程序中出现报错的时候,图标是小叉子
  • Alt + 箭头 (上或者下) 移动代码行
  • Ctrl + Alt + 箭头 (上或者下) 复制并移动代码行
  • Ctrl + D 删除当前行
  • Alt + Shift + S 自动生成代码
  • Ctrl + Shift + F 代码格式化
  • Alt + Shift + M 自动抽取方法
  • Alt + Shift + R 修改名字

大纲视图 (outline)

  • 展示类的结构
    • 绿色的实心圆 : public权限方法
    • 黄色的实心圆 : protected权限方法
    • 蓝色的三角形 : 默认权限方法
    • 红色的方块 : private权限方法
  • 修改名字 : 所有使用到的内容,全部发送改变

Debug调试模式

程序出现问题找不到,程序不出问题,但是运行的结果和你预期不一样

  • 在程序的有效行,行号双击,出现断点
    • 当程序,执行到断点的时候,不在执行,停止
    • 我们自己,可以手动控制程序运行
    • 启动调试模式
      • 程序会出现绿色背景,这行还没有被执行
      • 右侧窗口 Variables变量,看到程序中所有变量的值
      • 按钮 : step over 快捷键F6 代码向下走一行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值