Java 基础知识(六)

  1. 方法:
  • 1)封装一段特定的业务逻辑功能
  • 2)尽可能的独立,一个方法只干一件事
  • 3)被反复调用多次
  • 4)可以减少代码重复,有利于代码的维护,有利于团队的协作
  1. 方法的定义:

    java 复制代码
    修饰词 返回值类型 方法名(参数列表){
      方法体
    }
  2. 方法的调用:

  • 1)无返回值: 方法名(有参传参);
  • 2)有返回值: 数据类型 变量 = 方法名(有参传参);
  1. return:
  • 1)return 值; //结束方法的执行,返回结果给调用方。用在有返回值的方法中
  • 2)return; //结束方法的执行。用在无返回值的方法中
  1. 猜字符小游戏:

①设计数据结构:变量

java 复制代码
char[] chs;   //随机字符数组
char[] input; //用户输入的字符数组
int[] result; //对比结果
int score;    //得分

②设计程序结构:方法

1)主方法:

java 复制代码
public static void main(String[] args){
  //...
}

2)生成随机字符数组:

java 复制代码
public static char[] generate(){
  char[] chs = new char[5];
  //...
  return chs;
}

3)对比:随机字符数组chs与用户输入的字符数组input

java 复制代码
public static int[] check(char[] chs,char[] input){
  int[] result = new int[2];
  //...
  return result;
}

③设计算法:方法体

String str = "abc";

1)将字符串转换为字符数组:

char[] input = str.toCharArray();

2)将字符串转换为大/小写字母:

str = str.toUpperCase();

str = str.toLowerCase();

3)判断字符串内容是否相等:

if(str.equals("EXIT")){}

java 复制代码
//方法的演示
public class MethodDemo {
	public static void main(String[] args) {
		say();
		//sayHi(); //编译错误,有参则必须传参
		//sayHi(250); //编译错误,参数类型必须匹配
		sayHi("zhangsan"); //String name="zhangsan"
		sayHi("lisi"); //String name="lisi";
		sayHi("wangwu"); //String name="wangwu";
		
		sayHello("zhangsan",25); //String name="zhangsan",int age=25
		sayHello("lisi",28); //String name="lisi",int age=28
		
		double a = getNum(); //getNum()的值就是return后的88.88
		System.out.println(a); //88.88
		
		int b = plus(5,6); //实参(实际参数)
		System.out.println(b); //11
		
		int m=5,n=6;
		int c = plus(m,n); //传递的是m和n里面的数
		System.out.println(c); //11
		
		a(); //嵌套调用----111,333,444,222
	}
	
	public static void a() {
		System.out.println(111);
		b();
		System.out.println(222);
	}
	public static void b() {
		System.out.println(333);
		c();
	}
	public static void c() {
		System.out.println(444);
	}
	
	//有参有返回值
	public static int plus(int num1,int num2) { //形参(形式参数)
		int num = num1+num2;
		return num; //返回的是num里面的数
		//return num1+num2; //返回num1+num2的和
	}
	
	//无参有返回值
	public static double getNum() {
		//return; //编译错误,return后必须跟一个值
		//return "abc"; //编译错误,返回值类型必须匹配
		return 88.88; //1)结束方法的执行 2)返回结果给调用方
	}
	
	//无参无返回值
	public static void say() {
		System.out.println("大家好,我叫WKJ,今年37岁了");
	}
	
	//有参无返回值
	public static void sayHi(String name) {
		System.out.println("大家好,我叫"+name+",今年37岁了");
	}
	
	//有参无返回值
	public static void sayHello(String name,int age) {
		if(age>50) {
			return; //结束方法
		}
		System.out.println("大家好,我叫"+name+",今年"+age+"岁了");
	}
	
}

练习:

  1. 实现如下程序,主流程:
  • 1)手里面藏一个数chs
  • 2)猜吧!接收用户输入的一个数input
  • 3)对比:chs与input
    • 3.1)若猜对了,则算分并输出---结束循环
    • 3.2)若猜错了,提示字符对个数和位置对个数,继续第2步
  1. 查询数组最小值,并将其放在第一位

创建程序,实现查询数组中最小值的功能,并将最小值放入数组的第一位。需求为:创建一个长度为 10 的数组,数组内放置 10 个 0 到 99 之间(包含0,包含99)的随机整数作为数组元素,要求查询出数组中的最小值,并打印显示在界面上。然后,将查询到的数组最小值记载为数组的第一个元素,并打印赋值后的数组内容。界面效果如下图所示:

  1. 总结冒泡排序算法的原理

  2. 随机生成数组

封装一个方法generateArray,该方法实现生成指定长度的int数组,该数组的元素为0到指定范围内的随机数,并将该数组返回。

答案:

java 复制代码
import java.util.Scanner;
// 猜字符小游戏
public class GuessingGame {
	public static void main(String[] args) {
		// 表示玩家猜测的次数
		int count = 0;
		// 用于保存判断的结果
		int[] result = new int[2];
		Scanner scanner = new Scanner(System.in);
		System.out.println("GuessingGame>欢迎尝试猜字母游戏!");
		// 表示猜测的字符串
		char[] chs = generate();
		System.out.println(chs);
		System.out.println("GuessingGame>游戏开始,请输入你所猜的5个字母序列:(exit------退出)");
		while (true) {
			String inputStr = scanner.next().toUpperCase();
			if ("EXIT".equals(inputStr)) {
				System.out.println("GuessingGame>谢谢你的尝试,再见!");
				break;
			}
			
			char[] input = inputStr.toCharArray();
			result = check(chs, input);
			if (result[0] == chs.length) {// 完全猜对的情况
				int score = 100 * chs.length - count * 10;
				System.out.println("GuessingGame>恭喜你猜对了!你的得分是:" + score);
				break;
			} else {
				count++;
				System.out.println("GuessingGame>你猜对" + result[1] + "个字符,其中"
						+ result[0] + "个字符的位置正确!(总次数=" + count + ",exit------退出)");
			}
		}
		scanner.close();
	}

	/**
	 * 随机生成需要猜测的字母序列
	 * 
	 * @return 存储随机字符的数组
	 */
	public static char[] generate() {
		
		char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
				'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
				'W', 'X', 'Y', 'Z' };
		boolean[] flags = new boolean[letters.length];
		char[] chs = new char[5];
		for (int i = 0; i < chs.length; i++) {
			int index;
			do {
				index = (int) (Math.random() * (letters.length));
			} while (flags[index]);// 判断生成的字符是否重复
			chs[i] = letters[index];
			flags[index] = true;
		}
		return chs;
	}

	/**
	 * 比较玩家输入的字母序列和程序所生成的字母序列,逐一比较字符及其位置,并记载比较结果
	 * 
	 * @param chs
	 *            程序生成的字符序列
	 * @param input
	 *            玩家输入的字符序列
	 * @return 存储比较的结果。返回值int数组 的长度为2,其中,索引为0的位置
	 *         用于存放完全猜对的字母个数(字符和位置均正确),索引为1的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。
	 */
	public static int[] check(char[] chs, char[] input) {
		int[] result = new int[2];
		for (int i = 0; i < 5; i++) {
			for (int j = 0; j < chs.length; j++) {
				if (input[i] == chs[j]) {// 判断字符是否正确
					result[1]++;
					if (i == j) {// 判断位置是否正确
						result[0]++;
					}
					break;
				}
			}
		}
		return result;
	}
}
java 复制代码
public class Exercise {
	public static void main(String[] args) {
		//1.找到数组元素的最小值,并放在第一位
		int[] arr = new int[10];
		for(int i=0;i<arr.length;i++) {
			arr[i] = (int)(Math.random()*100);
			System.out.println(arr[i]);
		}
		
		int min = arr[0];
		for(int i=1;i<arr.length;i++) {
			if(arr[i]<min) {
				min = arr[i];
			}
		}
		System.out.println("最小值为:"+min);
		
		int[] as = new int[arr.length+1];
		System.arraycopy(arr,0,as,1,arr.length);
		as[0] = min;
		for(int i=0;i<as.length;i++) {
			System.out.println(as[i]);
		}
		
		//2.随机生成数组
		int[] arr = generateArray(3,10);
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
		
	}
	
	public static int[] generateArray(int len,int max){
		int[] arr = new int[len];
		for(int i=0;i<arr.length;i++) {
			arr[i] = (int)(Math.random()*max);
		}
		return arr;
	}
	
}
相关推荐
爱折腾的小黑牛11 分钟前
小程序多人协作的权限设计:三级权限的实现
后端
没钥匙的锁113 分钟前
05-Java面向对象构造器与封装
java·开发语言
aaPIXa62239 分钟前
C++采样引导优化SPGO——比PGO更智能的编译器决策新方案
java·c++·人工智能
蓝银草同学1 小时前
Stream 实战:博客列表排序、过滤与分页(AI 辅助学习 Java 8)
java·前端·后端
某不知名網友1 小时前
C/C++动态内存管理,智能指针及RAlI思想。
java·c语言·c++
小小猪的春天2 小时前
AI 编程 30 天实验复盘:效率提升 65%,线上 bug 涨到 11 个,问题出在哪
后端
爱勇宝2 小时前
3位工程师靠“删AI代码”创业,一周收费1万美元:以后最贵的能力,可能不是写代码
前端·后端·架构
沫离痕2 小时前
Cassandra 4.0.11 Docker 安装与配置手册
java·spring boot
plainGeekDev3 小时前
libs 目录 → Gradle 依赖管理
android·java·kotlin