- 方法:
- 1)封装一段特定的业务逻辑功能
- 2)尽可能的独立,一个方法只干一件事
- 3)被反复调用多次
- 4)可以减少代码重复,有利于代码的维护,有利于团队的协作
-
方法的定义:
java修饰词 返回值类型 方法名(参数列表){ 方法体 } -
方法的调用:
- 1)无返回值: 方法名(有参传参);
- 2)有返回值: 数据类型 变量 = 方法名(有参传参);
- return:
- 1)return 值; //结束方法的执行,返回结果给调用方。用在有返回值的方法中
- 2)return; //结束方法的执行。用在无返回值的方法中
- 猜字符小游戏:
①设计数据结构:变量
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)手里面藏一个数chs
- 2)猜吧!接收用户输入的一个数input
- 3)对比:chs与input
- 3.1)若猜对了,则算分并输出---结束循环
- 3.2)若猜错了,提示字符对个数和位置对个数,继续第2步
- 查询数组最小值,并将其放在第一位
创建程序,实现查询数组中最小值的功能,并将最小值放入数组的第一位。需求为:创建一个长度为 10 的数组,数组内放置 10 个 0 到 99 之间(包含0,包含99)的随机整数作为数组元素,要求查询出数组中的最小值,并打印显示在界面上。然后,将查询到的数组最小值记载为数组的第一个元素,并打印赋值后的数组内容。界面效果如下图所示:

-
总结冒泡排序算法的原理
-
随机生成数组
封装一个方法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;
}
}