第三天,已经没有第一天的那种态度了,但是目前还能坚持
一、自定义函数
函数又称为方法,自定义函数就是将部分操作封装成单独的方法,再去调用。其格式:
public static 返回数据的类型 函数名(形参1, 形参2, ...){
操作过程;
return 返回数据;
}
1.1 形式参数
调用函数时如果需要给这个函数提供参数,那么函数需要在括号里添加形式参数来接收实际参数。形参的命名没有特殊要求,但是调用函数时,实参的个数、顺序、数据类型必须和给定的形参相同。
1.2 返回值
如果函数没有返回值,那么声明函数时采用void关键字。如果函数有返回值,那么只能返回一个和声明类型相同的数据。
1.3 return/break/continue
return关键字还可以单独使用,来结束整个函数。
break和continue则是用于循环体中,且只作用于该关键字所在的最内侧循环。
break关键字用于直接结束并跳出该循环;
continue关键字用于结束该循环的当前单次循环,直接执行下一次循环。
二、双层for循环
双层for循环是将两次for循环嵌套使用。外层循环的每次循环过程中,内层循环都会全部循环一遍。内部循环多用于解决单个问题,如果过程较为复杂,可以单独封装为一个方法。
- 在一个水果的String数组中,找出出现最多的水果及出现的次数:
public class MaxCountFruit {
public static void main(String[] args) {
String[] arr = { "苹果", "菠萝", "苹果", "橘子", "梨子", "橘子", "桃子", "橘子" };
int maxNumber = 0;
String maxFruitName = null;
for (String fruit : arr) {
int count = 0;
for (String name : arr) {
if (fruit == name) {
count++;
}
}
if (count > maxNumber) {
maxNumber = count;
maxFruitName = fruit;
}
}
System.out.println("最多的水果 " + maxFruitName + " 出现了 " + maxNumber + " 次");
}
}
运行结果:
- 计算5!+4!+…+1!:
public class Total {
public static void main(String[] args) {
int total = 0;
for (int i = 5; i >= 1; i--) {
int result = 1;
for (int j = i; j >= 1; j--) {
result *= j;
}
total += result;
}
System.out.println("5!+4!+...+1!=" + total);
}
}
运行结果:
- 输出九九乘法口诀表:
public class NineNine {
public static void main(String[] args) {
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(i + "×" + j + "=" + i * j + "\t");
}
System.out.print("\n");
}
}
}
运行结果:
三、键盘输入
实现键盘输入需要创建一个Scanner的对象,其格式:
Scanner scan = new Scanner(System.in);
通过创建的这个对象,可以接收键盘输入,常用的有整型输入和字符串输入。
int a = scan.nextInt();
String str = scan.next();
在程序结束之前,可以选择将这个对象关闭。
scan.close();
输入一个人名,判断他是否在员工数组内:
public class EnsureName {
public static void main(String[] args) {
String[] employee = { "老一", "老二", "老三", "老四", "老五", "老六" };
System.out.println("请输入一个人名");
Scanner sc = new Scanner(System.in);
String sIn = sc.next();
boolean flag = false;
for (String name : employee) {
if (name.equals(sIn)) {
flag = true;
break;
}
}
System.out.println(flag ? "存在" : "不存在");
sc.close();
}
}
运行结果:
String msg = flag ? "存在" : "不存在";
这句运用的是三元运算符,也叫作三目运算符,其格式:
boolean类型的条件判断 ? 条件为true时的值 : 条件为false时的值
四、练习
制作一个人员名单管理系统,可以查询名单和添加人员:
import java.util.Arrays;
import java.util.Scanner;
public class Employee {
static String[] employee = { "jack", "lucy", "rose" };
static Scanner scan = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("------欢迎进入员工管理系统------");
welcome();
System.out.println("-正在退出,请稍后...");
}
public static void welcome() {
System.out.println("------主 菜 单------");
System.out.println("-1.查询全部人员");
System.out.println("-2.增加新人员");
System.out.println("-3.退出");
System.out.println("---------------------");
String sIn = scan.next();
if ("1".equals(sIn)) {
showEmployee();
} else if ("2".equals(sIn)) {
addEmployee();
} else if ("3".equals(sIn)) {
return;
} else {
System.out.println("非法输入");
welcome();
}
}
public static void showEmployee() {
System.out.println("------人员名单------");
for (String name : employee) {
System.out.println("\t" + name);
}
System.out.println("---------------------");
welcome();
}
public static void addEmployee() {
System.out.println("-请输入一个人员姓名");
String sIn = scan.next();
employee = addToArr(sIn, employee);
System.out.println("-输入成功!");
welcome();
}
public static String[] addToArr(String a, String[] arr) {
arr = Arrays.copyOf(arr, arr.length + 1);
arr[arr.length - 1] = a;
return arr;
}
}
运行结果:
Arrays.copyOf(arr, arr.length + 1);
这句是调用 Arrays 的 copyOf() 方法,用于创建一个新数组,第二个参数指定要建立的数组长度,并把第一个参数提供的数组的数据复制到该数组内。