一:买飞机票
package com.it.test;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//计算机票价格,输入机票原价,月份,头等舱或经济舱
//按下面规则计算:旺季(5-10)头等舱9折,经济舱8.5折,淡季(11-4)头等舱7折,经济舱6.5折
//1.输入机票价格,月份,头等舱或经济舱
Scanner sc = new Scanner(System.in);
//机票价格
System.out.println("输入机票价格:");
double price = sc.nextDouble();
//月份
System.out.println("输入月份:");
int month = sc.nextInt();
//经济舱-头等舱
System.out.println("输入仓位");
String location = sc.next();
//2.计算价格
double price_out = 0;
if (month<=10 && month>=5) {
if (location == "头等舱") {
price_out = 0.9 * price;
} else {
price_out = 8.5 * price;
}
} else {
if (location == "经济舱") {
price_out = 0.7 * price;
} else {
price_out = 0.65 *price;
}
}
//3.输出价格
System.out.println(price_out);
}
}
二:找质数
package com.it.test;
public class Test2 {
public static void main(String[] args) {
//判断101-200之间有多少素数,
//思路:判断能否被2-9整除
//定义变量i,赋值为100,开始循环
int count = 0;
for (int i=101 ; i<=200 ; i++) {
if (dec(i)) {
System.out.println("当前的数字"+i+"是质数");
count++ ;
}
}
System.out.println("101到200之间有"+count+"个质数");
}
public static boolean dec(int x) {
//定义boolean
boolean flag = true;
for (int i=2 ; i <x ; i++) {
if (x%i == 0) {
flag = false;
break;
}
}
return flag;
}
}
三:开发验证码
AT1:如果我们需要在一堆没什么规律的数据中随机抽取,可以先把这些数据放在数组里面,在随机抽一个索引。
AT2:字母可以通过强制转换数字而得到,如:char ch = (char) (97+1) -> ch = 'b'
package com.it.test;
import java.util.Random;
public class Test3 {
public static void main(String[] args) {
//开发验证码,定义方法实现随机产生一个5位的验证码
//验证码格式:1:长度为5 2:前四位是大写字母或者是小写字母 3:最后一位是数字
//1.大写字母和小写字母都放在一个数组里面
char chs [] = new char[52];
for (int i=0 ; i<52 ; i++) {
if (i <=25 ) {
chs[i] = (char)(97+i);
} else {
chs[i] = (char)(65+i-26);
}
}
//2.随机抽取4次
Random r = new Random();
//定义字符串记录变量
String str = "";
for (int i=0 ; i<4 ; i++){
int randomIndex = r.nextInt(52); //随机抽取索引
str += chs[randomIndex]; //找到对应的字母拼接在字符串上
}
//3.随机抽取一个数字0-9
int number = r.nextInt(10);
str += number;
System.out.println(str);
}
}
四:数组元素的复制
package com.it.test;
public class Test4 {
public static void main(String[] args) {
//把老数组中的元素赋值到新数组中
//1.定义老数组
int [] arr = {1,2,3,4,5,6,7};
//2.定义新数组和老数组等长
int [] newarr = new int [arr.length];
//3.遍历数组,将把老数组中的元素赋值到新数组中
for (int i = 0; i < newarr.length; i++) {
newarr[i] = arr[i];
}
for (int i = 0; i < newarr.length; i++) {
System.out.println(newarr[i]);
}
}
}
五:评委打分
package com.it.test;
import java.util.Random;
public class Test5 {
public static void main(String[] args) {
//在比赛中,6个评委打分,范围0-100
//选手最后得分为去掉最大和最小的剩下四个的平均分
//1.定义数组,存储6个分数
int [] arr = new int [6];
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(101);
System.out.println("第"+i+"个数字是"+arr[i]);
}
//2.去掉最大值和最小值
int maxIndex = 0;
int minIndex = 0;
for (int i = 1; i < arr.length; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
} else if (arr[i] < arr[minIndex]) {
minIndex = i;
}
}
//3.求平均数
int average = 0;
for (int i = 0; i < arr.length; i++) {
if ((i != minIndex) && (i !=maxIndex)) {
average += arr[i];
}
}
average /= 4;
System.out.println(average);
}
}
六:数字加密和解密
package com.it.test;
public class Test6 {
public static void main(String[] args) {
//对某个数字进行加密
/*规则如下:1.对每位数字加五
2.对十求余
3.将所有数字反转
*
* */
int num = 12;
//1.把数字里的每一位放在数组中
int [] arr = numToArray(num);
//2.对每一位计算
arr = numCompute(arr);
//3.反转数组中的数字
arr = arrConverse(arr);
//4.数组元素组成数字
num = arrToNum(arr);
System.out.println(num);
}
//把数字放在数组中
public static int [] numToArray (int num) {
int num0 = num;
//先计算输入数字的位数
int num_len = 0;
while (num != 0) {
num_len ++;
num = num/10;
}
//动态初始化数组
int arr [] = new int[num_len];
//将数字存在数组中
int numLast = 0; //存放数字最后一位
for (int i = 0; i < arr.length; i++) {
numLast = num0 % 10;
arr[arr.length - 1 - i] = numLast;
num0 = num0/10;
}
return arr;
}
//对每一位计算
public static int [] numCompute (int arr []) {
for (int i = 0; i < arr.length; i++) {
arr[i] = (arr[i] + 5) % 10 ;
}
return arr;
}
//对数组取反
public static int [] arrConverse (int arr[]) {
int arr_cov [] = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
arr_cov [arr.length-i-1] = arr[i];
}
return arr_cov;
}
//拼接数组中的数字
public static int arrToNum (int arr[]) {
int num = 0;
for (int i = 0; i < arr.length; i++) {
num = num * 10 + arr[i];
}
return num;
}
}
ps:变量的批量修改
先选中变量x,在按shift+F6,再修改变量,可以同时修改所有同名变量。
七:抽奖的实现
package com.it.test;
import java.util.Random;
public class Test7 {
public static void main(String[] args) {
//需求:直播抽奖,奖金为现金红包,金额有{2,588,888,1000,10000}
//用代码模拟抽奖,打印每次抽到的奖项
//1.定义奖池并打乱奖池中的金额顺序
int [] arr = {2,588,888,1000,10000};
Random r = new Random();
int randomIndex = 0;
int tep = 0;
for (int i = 0; i < arr.length; i++) {
//获得随机索引
randomIndex = r.nextInt(arr.length);
//将获得的索引和当前索引中的元素交换
tep = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = tep;
}
//2.遍历奖池,从0索引开始
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"元的奖金被抽出");
}
}
}
八:双色球系统
package com.it.test;
import java.util.Random;
import java.util.Scanner;
public class Test8 {
public static void main(String[] args) {
//1.生成中奖号码 6个红球 1个蓝球 红球从1-33中选 蓝球从1-16中选
int arr[] = createNumber();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//2.用户输入号码
int arrUser [] = userInput();
//3.判断中奖金额
int num = getNum(arr,arrUser);
System.out.println(num);
}
//函数1:生成中奖号码
public static int [] createNumber () {
//定义中奖数组
int arr [] = new int [7];
//随机抽取数字
Random r = new Random();
//抽取前6个数字
for (int i = 0; i < arr.length-1;) {
int num = r.nextInt(33)+1;
boolean flag = contains(arr,num);
if (flag) {
arr[i] = num;
i++;
}
}
//抽最后一个蓝色球
arr[6] = r.nextInt(16) + 1 ;
return arr;
}
//函数2:判断号码是否重复
public static boolean contains (int arr[] , int num) {
for (int i = 0; i < arr.length; i++) {
if (num==arr[i]){
return false;
}
}
return true;
}
//函数3:用户输入号码
public static int [] userInput(){
Scanner sc = new Scanner(System.in);
//定义用户输入数组
int arr[] = new int [7];
//输入前6个红色球号码
for (int i = 0; i < arr.length-1;) {
//输入第i个号码
System.out.println("请输入第" + (i+1) + "个号码");
int num = sc.nextInt();
//判断输入是否正确
if (num>=1 && num<=33){
//判断是否重复
boolean flag = contains(arr,num);
if (!flag) {
//重复则报错
System.out.println("输入数字重复");
} else {
//不重复则赋值 i++
arr[i] = num;
i++;
}
} else {
System.out.println("输入数字超出范围,请重新输入");
}
}
//输入最后一个蓝色球号码
System.out.println("请输入第7位数字");
arr[6] = sc.nextInt();
return arr;
}
//函数4:判断用户中奖金额
public static int getNum(int [] arr1 , int [] arr2){
//定义红色和蓝色的计数值
int redCount = 0;
int buleCount = 0;
//计算红色计数值
for (int i = 0; i < arr2.length-1; i++) {
for (int i1 = 0; i1 < arr1.length; i1++) {
//如果用户号码中的值在中奖号码中有,则红色计数++
if (arr2[i] == arr1[i1]) {
redCount++;
break;
}
}
}
//计算蓝色计数值
for (int i = 0; i < arr1.length; i++) {
if (arr2[6] == arr1[i]){
buleCount++;
break;
}
}
return redCount+buleCount;
}
}
九:二维数组
1.二维数组的静态初始化:
数据类型 [][] 数组名 = new 数据类型 [][] { {元素1,元素2} {元素1,元素2} };
简化格式:数据类型 [][] 数组名 = { {元素1,元素2} , {元素1,元素2} };
eg:int [][] arr = { {11,22} , {33,44} };
建议格式:int [][] arr = {
{1,2,3},
{4,5,6,7,8}
} //二维数组分开定义,为了代码可读性
2.获取元素
arr [0] = I@119d7047 //这里打印出来的是二维数组中第一个数组的地址值
arr [0][0] = 1 //这里打印的是二维数组00位置的值
3.二维数组的动态初始化
格式:数据类型 [][] 数组名 = new 数据类型 [m][n];
eg:int [][] arr = new int [2][3];