java 方法案例
案例一:
- 案例:买飞机票
- 需求:机票价格按照淡季旺季,头等舱和经济舱收费,输入机票原价,月份和头等仓或经济仓
- 按照如下规则计算机票价格:旺季(5—10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6。5折
import java.util.Scanner;
public class BuyAirTicket {
public static void main(String[] args) {
//定义变量,分别存月份,舱位等级,机票原价,现价
double currntPrice = 0; //机票现价
//创建键盘扫描器对象
Scanner sc = new Scanner(System.in);
//系统提示信息,并获取键盘输入
System.out.println("请输入你选择的舱位等级:");
String classLevel = sc.nextLine(); //舱位等级
System.out.println("请输入你选择的月份:");
int month = sc.nextInt(); //月份
System.out.println("请输入你的机票原价:");
double originalPrice = sc.nextDouble(); //机票现价
//调用函数,计算机票价格
currntPrice = calculateMoney(month, originalPrice, classLevel);
/* //利用switch语句判断收费规则
switch(month){
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
if(classLevel.equals("经济舱")){
currntPrice = originalPrice*0.85;
break;
}else{
currntPrice = originalPrice*0.9;
break;
}
case 11:
case 12:
case 1:
case 2:
case 3:
case 4:
if(classLevel.equals("经济舱")){
currntPrice = originalPrice*0.65;
break;
}else{
currntPrice = originalPrice*0.7;
System.out.println(classLevel);
break;
}
default:
System.out.println("你输入的信息有误!");
}*/
//输出机票现价
System.out.println("你的机票现价为:" + currntPrice);
}
//定义方法计算现在的机票价格
public static double calculateMoney(int month, double originalPrice, String classLevel){
double currntPrice = 0;
switch(month){
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
if(classLevel.equals("经济舱")){
currntPrice = originalPrice*0.85;
break;
}else if(classLevel.equals("头等舱")){
currntPrice = originalPrice*0.9;
break;
}else{
System.out.println("你输入信息有误");
return -1;
}
case 11:
case 12:
case 1:
case 2:
case 3:
case 4:
if(classLevel.equals("经济舱")){
currntPrice = originalPrice*0.65;
break;
}else if(classLevel.equals("头等舱")){
currntPrice = originalPrice*0.7;
System.out.println(classLevel);
break;
}else{
System.out.println("你输入信息有误");
return -1;
}
default:
System.out.println("你输入的信息有误!");
}
return currntPrice;
}
}
案例二
- 寻找1-100之间的素数,并且,统计素数的总数
public class IsPrime {
public static void main(String[] args) {
//调用方法判断素数
int count = isPrime();
//输出素数的个数
System.out.println("素数的个数为:" + count);
}
//定义方法,查找1-100之间素数,并统计
public static int isPrime(){
//定义变量存储素数的个数
int count = 0;
boolean flag = true;
for(int i=1; i<=100; i++){
for(int j=2; j<=i/2; j++){
if(i%j == 0){
flag = false;
break;
}
flag = true;
}
if(flag){
System.out.print(i + " ");
count++;
}
}
return count;
}
}
案例三:
- 案例:开发验证码
- 需求:定义方法实现随机产生一个5位的验证码,每位可能是数字,大写字母
- 小写字母。
import java.util.Random;
/*
* 案例:开发验证码
* 需求:定义方法实现随机产生一个5位的验证码,每位可能是数字,大写字母
* 小写字母。
* */
public class Test3 {
public static void main(String[] args) {
//调用方法产生随机验证码
String verification = verificationCode();
//输出随机验证码
System.out.println("本次的验证码为:" + verification);
}
//定义方法生成验证码
public static String verificationCode(){
//定义变量存储产生的验证码
String verfication = "";
//创建随机数对象
Random r = new Random();
//定义变量存储产生的随机数,用以选择数字,大写字母,还是小写字母
int num;
//利用for循环,产生5次随机数
for(int i=0; i<5; i++){
//产生随机数,用以选择产生的字符类型
num = r.nextInt(3) + 1;
switch(num){
case 1:
verfication = verfication + r.nextInt(10); //产生一个数字
break;
case 2:
verfication = verfication + (char) (r.nextInt(26)+65); //产生一个大写字符
break;
case 3:
verfication = verfication + (char)(r.nextInt(26)+97); //产生一个小写字符
break;
}
}
return verfication;
}
}
案例四:
*案例:数组复制
public class CopyArray {
public static void main(String[] args) {
//定义两个同长度的数组
int[] arr1 = new int[]{1, 23, 324, 324,};
int[] arr2 = new int[arr1.length];
//调用方法,将一个数组复制给另一个数组
copy(arr1, arr2);
//输出arr2的元素
System.out.print("arr2:" + "[");
for (int i = 0; i < arr2.length; i++) {
System.out.print((i==arr2.length-1)? arr2[i] :arr2[i] + ",");
}
System.out.print("]");
}
/**
* 将arr1的元素复制到arr2
* */
public static void copy(int[] arr1, int[] arr2){
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
}
}
案例五:
- 案例:数字加密
- 需求:某系统的数字密码,比如:1983,采用加密方式传输,规则如下:先得到每一位数
- ,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新的数字
import java.util.Scanner;
/**
* 案例:数字加密
* 需求:某系统的数字密码,比如:1983,采用加密方式传输,规则如下:先得到每一位数
* ,然后每位数都加上5,再对10求余,最后将所有数字反转,得到一串新的数字
* */
public class Encryption {
public static void main(String[] args) {
//创建键盘扫描器对象
Scanner sc = new Scanner(System.in);
//给出系统提示:用户输入密码长度
System.out.println("请输入你的密码长度:");
//定义变量存储密码长度
int num = sc.nextInt();
//定义数组,存储用户输入的密码
int[] code = new int[num];
//输入密码
inputArray(code);
//加密密码
codeEncryption(code);
//输出加密后的密码
printArray(code);
}
/**
* 该方法用以对数字加密
* */
public static void codeEncryption(int[] array){
//对密码的每一位数加5,再对10求余
for (int i = 0; i < array.length; i++) {
array[i] += 5;
array[i] %= 10;
}
//反转数组
reverse(array);
}
/**
* 该方法用以数组输入
* */
public static void inputArray(int[] array){
//创建键盘扫描器对象
Scanner sc = new Scanner(System.in);
//利用for循环,实现数组的输入
for (int i = 0; i < array.length; i++) {
//输出键盘输入提示
System.out.println("请输入密码的第" + (i+1) + "个元素");
array[i] = sc.nextInt();
}
}
/**
* 该方法用于实现数组的反转
* */
public static void reverse(int[] array){
int start = 0;
int end = array.length-1;
int temp; //用以存储临时数组元素
//数组反转函数主体
for(;start<end; start++, end--){
temp = array[end];
array[end] = array[start];
array[start] = temp;
}
}
/**
* 该函数用于实现数组的遍历输出,实现密码的输出
* */
public static void printArray(int[] array){
System.out.println("加密后的密码为:");
for (int i = 0; i < array.length; i++) {
System.out.print(array[i]);
}
}
}
案例六:双色球系统
- 案例:模拟双色球系统
- 需求:随机生成一组中奖号码
- 投注号码由6个红色球号码和一个蓝色球号码组成(不可重复),
- 红色球号码从1-33中选择;
- 蓝色球号码从1-16中选择
//完整代码
import java.util.Random;
import java.util.Scanner;
/**
* 案例:模拟双色球系统
* 需求:随机生成一组中奖号码
* 投注号码由6个红色球号码和一个蓝色球号码组成(不可重复),
* 红色球号码从1-33中选择;
* 蓝色球号码从1-16中选择
* */
public class Test4 {
public static void main(String[] args) {
int[] luckNumber = creatLuckNUmber();
int[] userNumber = userInputNumber();
judge(luckNumber, userNumber);
}
/**
* 该方法用于随机生成一组中将号码并返回
* */
public static int[] creatLuckNUmber(){
//创建数组存储幸运号码
int[] luckNumber = new int[7];
//创建随机数对象,用以产生幸运号码
Random r = new Random();
//创建变量,存储每次产生的随机数
int luck;
//利用循环,产生红球号码
for (int i = 0; i < luckNumber.length-1; i++) {
luck = r.nextInt(33)+1;
//判断红球号码是否重复,前6个为红球号码
for (int j = 0; j < luckNumber.length-1; j++) {
if(luck==luckNumber[i]){
break;
}else{
luckNumber[i] = luck;
}
}
}
//随机产生蓝球号码
luckNumber[6] = r.nextInt(16)+1;
return luckNumber;
}
/**
* 该方法用于实现用户选购号码
* */
public static int[] userInputNumber(){
//定义数组存储,用户输入的号码
int[] userNumber = new int[7];
//创建键盘扫描器对象
Scanner sc = new Scanner(System.in);
//用户输入选择的红球号码
for (int i = 0; i < userNumber.length-1; i++) {
System.out.println("请输入你要选择的第" + (i+1) + "个红球号码");
userNumber[i] = sc.nextInt();
}
//用户输入选择的蓝球号码
System.out.println("请输入你要选择的篮球号码:");
userNumber[6] = sc.nextInt();
//输出用户选择的号码
System.out.println("你本次选择的号码为:");
System.out.print("[");
for (int i = 0; i < userNumber.length; i++) {
System.out.print(i==userNumber.length-1?userNumber[i]:userNumber[i]+",");
}
System.out.println("]");
return userNumber;
}
/**
* 该方法用于判断用户中奖情况
* */
/*
* 奖金规则:
* 一等奖:6+1:1000万
* 二等奖:6+0:500万
* 三等奖:5+1:300元
* 四等奖:5+0;4+1:200元
* 五等奖:4+0;3+1;2+1:10元
* 六等奖:1+1:5元
* */
public static void judge(int[] luckNumber, int[] userNumber){
//定义变量存储红球号码相匹配的个数
int redCount = 0;
//定义变量存储蓝球号码相匹配的个数
int blueCount = 0;
//利用for循环判断红球匹配的个数
for (int i = 0; i < luckNumber.length-1; i++) {
if(luckNumber[i]==userNumber[i]){
redCount++;
}
}
//判断蓝球号码是否相匹配
if(luckNumber[6]==userNumber[6]){
blueCount++;
}
//输出本次产生的中将号码
System.out.println("本次产生的中将号码为");
System.out.print("[");
for (int i = 0; i < luckNumber.length; i++) {
System.out.print(i==luckNumber.length-1?luckNumber[i]:luckNumber[i]+",");
}
System.out.println("]");
//判断中奖级别
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("恭喜你获得三等奖,奖金300元");
}else if((redCount==5&&blueCount==0)||(redCount==4&&blueCount==1)){
System.out.println("恭喜你获得四等奖,奖金200元");
}else if((redCount==4&&blueCount==0)||(redCount==3&&blueCount==1)||(redCount==2&&blueCount==1)){
System.out.println("恭喜你获得五等奖,奖金10元");
}else if(redCount==1&&blueCount==1){
System.out.println("恭喜你获得六等奖,奖金5元");
}else{
System.out.println("很遗憾你本次未中奖,相信下一次幸运会光临你");
}
}
}