代码题1
定义方法获取一个整数数组,该数组要求:
- 长度为6
- 数组中的数字为范围1到100的随机数
- 要求随机数不能重复
public class TaskPlus5 {
public static void main(String[] args) {
int[] randomArr = getRandomArr();
printArr(randomArr);
}
/**
* 需求:java 定义方法获取一个整数数组,该数组要求:
* 1. 长度为6
* 2. 数组中的数字为范围1到100的随机数
* 3. 要求随机数不能重复
*/
public static int[] getRandomArr() {
// 定义一个长度为6的空数组
int[] ints = new int[6];
// 定义一个计数变量,每插入一个不重复的数,就+1
int count = 0;
// 定义一个获得随机数的对象
Random random = new Random();
//开启一个死循环,不断的往ints插入数据,直到插满不重复的数据为止
while (true) {
//获得随机数
int rn = random.nextInt(100) + 1;
//判断随机数rn是否在 ints中,如果在就返回true 不在就返回false
if (!exist(rn, ints)) {
//数组中不存在rn随机数,插入
ints[count] = rn;
count++;
}
if (count == ints.length) {
break;
}
}
return ints;
}
/**
* 判断一个数是否存在于某个数组中,如果存在返回true,否则返回false
*
* @param in
* @param arr
* @return
*/
public static boolean exist(int in, int[] arr) {
//遍历数组
for (int i1 = 0; i1 < arr.length; i1++) {
//获得数组中的元素
if (in == arr[i1]) {
return true;
}
}
return false;
}
/**
* 按照 [元素1,元素2,...]的格式打印int数组
*
* @param arr
*/
public static void printArr(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
//如果索引是最后一个值的时候,不需要加,
if (i == arr.length - 1) {
System.out.print(arr[i]);
} else {
//如果索引不是最后的,每次需要加一个,
System.out.print(arr[i] + ",");
}
}
System.out.print("]");
}
}
代码题2
验证码是很多网站登录时需要输入的,一般由 数字和字母组成,现在需要一个4位的验证码字符串,如:23ad、abc3、4opd等
请定义一个方法,利用字符数组和字符串拼接符+ 生成一个4位的随机验证码,并且在主方法main中打印出来。
public class TaskPlus5 {
public static void main(String[] args) {
//生成6个验证码
for (int i = 0; i < 6; i++) {
String code = generateVerificationCode();
System.out.println("验证码:" + code);
}
}
/**
* 生成验证码
*
* @return
*/
public static String generateVerificationCode() {
// 定义字符数组包含数字和字母
char[] characters = {
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'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',
'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'
};
// 创建一个Random对象用于生成随机索引
Random random = new Random();
// 生成4位随机验证码
String verificationCode = "";
for (int i = 0; i < 4; i++) {
// 随机选择字符数组中的一个字符
char randomChar = characters[random.nextInt(characters.length)];
// 将随机字符添加到验证码字符串
verificationCode = verificationCode + randomChar;
}
return verificationCode;
}
}
代码题3
个大V直播时发起了抢红包活动,分别有:9、666、188、520、99999五个红包。请模拟粉丝来抽奖,按照先来先得随机抽取,抽完即止,
注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的,示例如下(不一定是下面的顺序)

/**
* 模拟大V发红包
*/
public class RedPacketSimulation {
public static void main(String[] args) {
//红包池
int[] redPackets = {9, 666, 188, 520, 99999};
//已经抽到的结果(粉丝1-粉丝length号成员的红包金额)
int[] results = new int[redPackets.length];
//模拟抽奖
simulateFansDrawing(redPackets, results);
// 打印抽奖结果
for (int i = 0; i < results.length; i++) {
System.out.println("粉丝" + (i + 1) + "抢到红包:" + results[i]);
}
}
/**
* 模拟抽奖
* @param redPackets 红包池
* @param results 已经抽到的结果池
*/
public static void simulateFansDrawing(int[] redPackets, int[] results) {
Random random = new Random();
for (int i = 0; i < redPackets.length; i++) {
// 随机选择一个粉丝来抢红包
int fanIndex = random.nextInt(results.length);
// 判断该粉丝是否已经抽到过红包,如果抽到过则重新选择粉丝
while (results[fanIndex] != 0) {
fanIndex = random.nextInt(results.length);
}
// 将红包分给选中的粉丝
results[fanIndex] = redPackets[i];
}
}
}
代码题4(选做题)

代码题5 (选做题)
某程序员从网页中获取了一些字符串类型的QQ号码存入了字符串数组中,但忘记了做数字长度校验,如下["1236", "1234", "12345", "654123", "456789123", "1112222333444", "555a555","0662854" ]。QQ的长度只有5-12位才是有效号码,并且里面都是数字,第一位也不能为0。很显然有一些非法数据。请定义方法判断QQ号码是否正确,并实现过滤掉不合法的qq号码,并将合法数据遍历输出,输出的格式:["456789123","555a555","0662854" ]
public class QQNumberValidator {
public static void main(String[] args) {
String[] qqNumbers = {"1236", "1234", "12345", "654123", "456789123", "1112222333444", "555a555", "0662854"};
String[] validQQNumbers = filterValidQQNumbers(qqNumbers);
// 输出合法的QQ号码
System.out.print("[");
for (int i = 0; i < validQQNumbers.length; i++) {
System.out.print(validQQNumbers[i]);
if (i < validQQNumbers.length - 1) {
System.out.print(", ");
}
}
System.out.println("]");
}
/**
* 传入一个字符串qq号码数组,返回合法的qq号码
* @param qqNumbers
* @return
*/
public static String[] filterValidQQNumbers(String[] qqNumbers) {
// 定义变量 记录合法qq号的数量
int validCount = 0;
// 遍历一次计算合法QQ号码的数量
for (int i = 0; i < qqNumbers.length; i++) {
if (isValidQQNumber(qqNumbers[i])) {
validCount++;
}
}
// 创建一个数组存储合法的QQ号码
String[] validQQNumbers = new String[validCount];
int index = 0;
// 遍历第二次将合法QQ号码放入数组
for (int i = 0; i < qqNumbers.length; i++) {
if (isValidQQNumber(qqNumbers[i])) {
validQQNumbers[index++] = qqNumbers[i];
}
}
return validQQNumbers;
}
/**
* 判断一个号码是否合法
* @param qqNumber
* @return
*/
public static boolean isValidQQNumber(String qqNumber) {
// QQ号码长度在5到12之间,且只包含数字,第一位不能为0
if (qqNumber.length() >= 5 && qqNumber.length() <= 12 && qqNumber.charAt(0) != '0') {
//利用循环 判断qq号是否含有数字
for (int i = 0; i < qqNumber.length(); i++) {
if (!Character.isDigit(qqNumber.charAt(i))) {
return false;
}
}
return true;
}
return false;
}
}
代码题6(选做题)
小李用自己的钱买了十只股票,年末他看了各只股票的收益分别是百分之: 10.4,-3,-6.2,1.2,-6.1,-19,-3.8,0.9,-4.5,5.5 。
请使用数组相关知识编程,帮他统计赚钱的股票和赔钱的股票分别有多少只?
打印效果如下:
1.赚钱的股票一共有:4只 2.赔钱的股票一共有:6只
代码题7(选做题)
请设计一个程序,可以根据城市和距离计算出打车的费用。
需求:
创建一个字符串数组,其中有"北京", "上海", "广州"三个城市。在数组中随机获取一个城市,并根据随机出的城市获取到他们的起步价startingPrice。
- 北京的起步价10
- 上海的起步价15
- 广州的起步价20(价格为虚构)。
需求1:打印各个的城市以及起步价。
需求2:键盘录入车程,计算总费用并打印。
车费计算公式:
- 起步2公里以内(包含2公里)打车的费用为该城市的起步价。
- 超过2公里的部分按照每公里3元计算。