Java方法
方法是什么
方法Debug
方法定义注意点
方法总结
方法使用时的常见问题
判断奇偶数的方法
方法在计算机中的执行原理
Java的参数传递机制:值传递
基本类型的参数传递
引用类型的参数传递
方法案例一 判断两个数组是否一样
public class MethodTest3 {
public static void main(String[] args) {
//判断两个int类型的数组是否一样
int[] arr1 = {1, 2, 3};
int[] arr2 = {1, 2, 4};
System.out.println(equals(arr1, arr2));
}
public static boolean equals(int[] arr1, int[] arr2) {
if (arr1 == null && arr2 == null) {
return true;
}
if (arr1 == null || arr2 == null) {
return false;
}
if (arr1.length != arr2.length) {
return false;
}
for (int i = 0; i < arr1.length; i++) {
if (arr1[i] != arr2[i]) {
return false;
}
}
return true;
}
}
方法重载
return关键字在方法中单独使用
方法案例-买飞机票
public class Test1 {
public static void main(String[] args) {
//买飞机票
double price = calculate(1500, 5, "头等舱");
System.out.println("优惠价是:" + price);
}
public static double calculate(double price, int month, String type) {
// 判断月份是淡季还是旺季
if (month >= 5 && month <= 10) {
//旺季
switch (type) {
case "头等舱":
price *= 0.9; // price = price * 0.9;
break;
case "经济舱":
price = price * 0.85;
break;
}
} else {
// 淡季
switch (type) {
case "头等舱":
price *= 0.7; // price = price * 0.9;
break;
case "经济舱":
price = price * 0.65;
break;
}
}
return price;
}
}
方法案例-生成随机验证码
public class Test2 {
public static void main(String[] args) {
// 生成随机验证码
String code = cretaeCode(6);
System.out.println("生成的验证码为:" + code);
}
public static String cretaeCode(int len) {
Random r = new Random();
String code = "";
for (int i = 0; i < len; i++) {
int type = r.nextInt(3);//0 1 2 0 数字 1 大写字母 2小写字母
switch (type) {
case 0:
code += r.nextInt(10);
break;
case 1:
// 随机大写字符 A 65 Z 65+25 (0-25)+65
char ch1 = (char) (r.nextInt(26) + 65);
code += ch1;
break;
case 2:
// 随机小写字符 a 97 Z 97+25 (0-25)+97
char ch2 = (char) (r.nextInt(26) + 97);
code += ch2;
break;
}
}
return code;
}
}
方法案例-评委打分获取平均分
public class Test3 {
public static void main(String[] args) {
// 评委打分
System.out.println("您的最终成绩是" + getAverageScore(6));
}
public static double getAverageScore(int number) {
int[] scores = new int[number];
Scanner s = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
System.out.println("请录入第" + (i + 1) + "个评委的分数");
int score = s.nextInt();
scores[i] = score;
}
int sum = 0;
int maxScore = scores[0];
int minScore = scores[0];
for (int i = 0; i < scores.length; i++) {
int score = scores[i];
sum += score;
if (maxScore < score) {
maxScore = score;
}
if (minScore > score) {
minScore = score;
}
}
return 1.0 * (sum - maxScore - minScore) / (number - 2);
}
}
方法案例-数字加密
public class Test4 {
public static void main(String[] args) {
// 数字加密
System.out.println(encrypt(1983));
}
public static String encrypt(int number) {
int[] numbers = split(number);
for (int i = 0; i < numbers.length; i++) {
numbers[i] = (numbers[i] + 5) % 10;
}
reverse(numbers);
String data = "";
for (int i = 0; i < numbers.length; i++) {
data += numbers[i];
}
return data;
}
public static int[] split(int number) {
int[] numbers = new int[4];
numbers[0] = number / 1000;
numbers[1] = (number / 100) % 10;
numbers[2] = (number / 10) % 10;
numbers[3] = number % 10;
return numbers;
}
public static void reverse(int[] numbers) {
//反转数组
for (int i = 0, j = numbers.length - 1; i < j; i++, j--) {
int temp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = temp;
}
}
}
方法案例-拷贝数组
public class Test5 {
public static void main(String[] args) {
//拷贝数组
int[] arr = {1, 2, 3};
int[] arr2 = cloneArray(arr);
printArray(arr2);
}
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
}
System.out.println("]");
}
public static int[] cloneArray(int[] arr) {
int[] arr2 = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
}
}
方法案例-抢红包
import java.util.Random;
import java.util.Scanner;
public class Test6 {
public static void main(String[] args) {
//抢红包
int[] money = {9, 66, 188, 520, 9999};
start2(money);
}
public static void start2(int[] moneys) {
// 输入任意内容,随机抽取一个红包
Scanner sc = new Scanner(System.in);
Random r = new Random();
//打乱数据顺序
for (int i = 0; i < moneys.length - 1; i++) {
int index = r.nextInt(0, moneys.length);
int temp = moneys[i];
moneys[i] = moneys[index];
moneys[index] = temp;
}
for (int i = 0; i < moneys.length; i++) {
System.out.println("请您输入任意内容抽奖");
sc.next();
System.out.println("恭喜您获得" + moneys[i] + "元红包");
}
System.out.println("抽奖结束");
}
public static void start(int[] moneys) {
// 输入任意内容,随机抽取一个红包 存在性能问题
Scanner sc = new Scanner(System.in);
Random r = new Random();
for (int i = 0; i < moneys.length; i++) {
System.out.println("请您输入任意内容抽奖");
sc.next();
while (true) {
int index = r.nextInt(0, moneys.length);
int money = moneys[index];
if (money != 0) {
System.out.println("恭喜您获得" + money + "元红包");
moneys[index] = 0;
break;
}
}
}
System.out.println("抽奖结束");
}
}
方法案例-找素数
public class Test7 {
public static void main(String[] args) {
// 找素数
System.out.println("素数数量"+findPrime(101, 200));
}
public static int findPrime(int start, int end) {
int count = 0;
for (int i = start; i <= end; i++) {
boolean flag = true;
for (int j = 2; j < i / 2 + 1; j++) {
if (i % j == 0) {
flag = false;
break;
}
}
if (flag) {
System.out.println(i);
count++;
}
}
return count;
}
}
方法案例-找素数2
public class Test7_2 {
public static void main(String[] args) {
// 找素数
System.out.println("素数数量" + findPrime(101, 200));
}
public static int findPrime(int start, int end) {
int count = 0;
Out:// 为外部
for (int i = start; i <= end; i++) {
boolean flag = true;
for (int j = 2; j < i / 2 + 1; j++) {
if (i % j == 0) {
continue Out;//中断外层循环
}
}
count++;
System.out.println(i);
}
return count;
}
}
方法案例-找素数3
public class Test7_3 {
public static void main(String[] args) {
// 找素数
System.out.println("素数数量"+findPrime(101, 200));
}
public static int findPrime(int start, int end) {
// 定义一个变量,用来记录素数个数
int count = 0;
for (int i = start; i <= end; i++) {
if (isPrime(i)) {
count++;
System.out.println(i);
}
}
return count;
}
public static boolean isPrime(int num) {
// 判断一个数是不是素数
for (int i = 2; i < num / 2 + 1; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
方法案例-九九乘法表
public class Test8 {
public static void main(String[] args) {
// 九九乘法表
print(9);
}
public static void print(int n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + i * j + "\t");
}
System.out.println();
}
}
}
方法案例-打印三角形
public class Test9 {
public static void main(String[] args) {
//打印三角形
printTriangle(4);
}
public static void printTriangle(int n) {
for (int i = 1; i <= n; i++) {
//打印空格
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
//打印星号
for (int k = 1; k <= (2 * i - 1); k++) {
System.out.print(k % 2 == 0 ? " " : "*");
}
System.out.println();
}
}
}
方法案例-实现双色球
import java.util.Random;
import java.util.Scanner;
public class Test10 {
public static void main(String[] args) {
// 实现双色球
int[] selectNumbers = userSelectNumbers();
System.out.print("您选择的双色球的号码是:");
printArray(selectNumbers);
int[] luckyNumbers = createLuckyNumbers();
System.out.print("生成的随机双色球的号码是:");
printArray(luckyNumbers);
judge(selectNumbers, luckyNumbers);
}
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
System.out.print(i == arr.length - 1 ? arr[i] : arr[i] + ", ");
}
System.out.println("]");
}
// 设计一个方法,用于让用户投注一组号码并返回(前6个是红色球号码,最后一个是蓝色球号码)
public static int[] userSelectNumbers() {
// 定义一个数组,用于存放用户输入的号码
int[] numbers = new int[7];
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < numbers.length - 1; i++) {
while (true) {
System.out.println("请输入第" + (i + 1) + "个红球号码(1-33之间不能重复):");
int number = scanner.nextInt();
if (number < 1 || number > 33) {
System.out.println("输入的号码不合法,请重新输入");
} else {
if (isRepeat(number, numbers)) {
System.out.println("输入的号码不能重复,请重新输入");
} else {
numbers[i] = number;
break;
}
}
}
}
while (true) {
System.out.println("请输入最后一个个蓝球号码(1-16):");
int number = scanner.nextInt();
if (number < 1 || number > 16) {
System.out.println("输入的号码不合法,请重新输入");
} else {
numbers[6] = number;
break;
}
}
return numbers;
}
// 判断一个数组中是否有重复的数字
public static boolean isRepeat(int number, int[] numbers) {
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == 0) {
break;
}
if (numbers[i] == number) {
return true;
}
}
return false;
}
/**
* 设计一个方法 随机一组中奖号码 (6个红色球,1个蓝色球)
*/
public static int[] createLuckyNumbers() {
int[] numbers = new int[7];
Random random = new Random();
for (int i = 0; i < numbers.length - 1; i++) {
while (true) {
int number = random.nextInt(33) + 1;
if (!isRepeat(number, numbers)) {
numbers[i] = number;
break;
}
}
}
numbers[6] = random.nextInt(16) + 1;
return numbers;
}
/**
* 设计一个方法判断用户是否中奖
*/
public static void judge(int[] userNumbers, int[] luckyNNumbers) {
// 判断红色球命中个数
int redCount = 0;
// 判断蓝色球命中个数
int blueCount = 0;
for (int i = 0; i < userNumbers.length - 1; i++) {
for (int j = 0; j < luckyNNumbers.length - 1; j++) {
if (userNumbers[i] == luckyNNumbers[j]) {
redCount++;
break;
}
}
}
blueCount = userNumbers[6] == luckyNNumbers[6] ? 1 : 0;
System.out.println("您命中的红球数量是:" + redCount);
System.out.println("您命中的蓝球数量是:" + blueCount);
if (redCount == 6 && blueCount == 1) {
System.out.println("恭喜您,中一等奖了 1000万请收下!");
} else if (redCount == 6 && blueCount == 0) {
System.out.println("恭喜您,中二等奖了!500万请收下!");
} else if (redCount == 5 && blueCount == 1) {
System.out.println("恭喜您,中三等奖了 3000元!");
} else if (redCount == 5 && blueCount == 0 || redCount == 4 && blueCount == 1) {
System.out.println("恭喜您,中四等奖了 200元!");
} else if (redCount == 4 && blueCount == 0 || redCount == 3 && blueCount == 1) {
System.out.println("恭喜您,中五等奖了 10元!");
} else if ((redCount < 3 && blueCount == 1)) {
System.out.println("恭喜您,中六等奖了 5元!");
} else {
System.out.println("很遗憾,您没有中奖!");
}
}
}