文章目录
基础练习
飞机票
机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
可以设置一个获取价格的函数getPrice,传入机票原价、月份和头等舱或经济舱,得出折后价
在主函数中,根据月份和舱型改变参数
package com.itheima;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入票价");
double price = sc.nextInt();
System.out.println("请输入月份");
int month = sc.nextInt();
System.out.println("请输入座位");
String seat = sc.next();
if(month>=5 && month<=10){
price=getPrice(price,seat,0.9,0.85);
}else if ((month >= 1 && month <= 4) || (month >= 11 && month <= 12)){
price=getPrice(price,seat,0.7,0.65);
}else{
System.out.println("输入月份有误");
}
System.out.println(price);
}
public static int getPrice(double price,String seat,double v0,double v1){
if(seat.equals("头等舱")){
return (int)(price*v0);
}else{
return (int)(price*v1);
}
}
}
打印素数
判断101~200之间有多少个素数,并输出所有素数。
package com.itheima.test;
public class Test2 {
public static void main(String[] args) {
int count = 0;
for (int i = 101; i <= 200; i++) {
boolean flag = true;
for (int j = 2; j < i; j++) {
if(i % j == 0){
flag = false;
break;
}
}
if(flag){
System.out.println("当前数字"+i+"是质数");
count++;
}
}
System.out.println("一共有" + count + "个质数");
}
}
生成验证码
定义方法实现随机产生一个5位的验证码
验证码格式:
长度为5,前四位是大写字母或者小写字母,最后一位是数字
//方法:
//在以后如果我们要在一堆没有什么规律的数据中随机抽取
//可以先把这些数据放到数组当中
//再随机抽取一个索引
先把所有的验证码组成成分放入一个数组中,然后在这个数组中随机数抽取。
在String类的字符串时,要写空字符串,String result = "";
package com.itheima;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//1.大写字母和小写字母都放到数组当中
char [] arr = new char[52];
for(int i=0;i<arr.length;i++){
if(i<=25){
arr[i]=(char)(97+i);//添加小写字母 a--97
}else{
arr[i]=(char)(65+i-26);//添加大写字母 A--65
}
}
//定义一个字符串类型的变量,用来记录最终的结果
String result = "";
//2.随机抽取4次
Random random = new Random();
for(int i=0;i<4;i++){
int index = random.nextInt(arr.length);
result+=arr[index];
}
//3.随机抽取一个数字0~9
result+=(int)(random.nextInt(10));
System.out.println(result);
}
}
复制数组
把一个数组中的元素复制到另一个新数组中去。
package com.itheima.test;
public class Test4 {
public static void main(String[] args) {
//1.定义一个老数组并存储一些元素
int[] arr = {1,2,3,4,5};
//2.定义一个新数组的长度跟老数组一致
int[] newArr = new int[arr.length];
//3.遍历老数组,得到老数组中的每一个元素,依次存入到新数组当中
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i];
}
//4.新数组中已经存满元素了
for (int i = 0; i < newArr.length; i++) {
System.out.println(newArr[i]);
}
}
}
评委打分
在唱歌比赛中,有6名评委给选手打分,分数范围是[0 - 100]之间的整数。选手的最后得分为:去掉最高分、最低分后的4个评委的平均分,请完成上述过程并计算出选手的得分。
可设置4个函数,获取打分、计算最高分、计算最低分、计算平均分。
使用数组来存取分数。
package com.itheima;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] scoreArr = getScores();
for(int i = 0; i < scoreArr.length; i++){
System.out.println(scoreArr[i]);
}
int max = getMax(scoreArr);
int min = getMin(scoreArr);
int sum = getSum(scoreArr);
int avg=(sum-max-min)/(scoreArr.length-2);
System.out.println("最后得分:"+avg);
}
private static int getSum(int[] scoreArr) {
int sum = 0;
for(int i=0;i<scoreArr.length;i++){
sum+=scoreArr[i];
}
return sum;
}
private static int getMin(int[] scoreArr) {
int min = scoreArr[0];
for(int i = 1; i < scoreArr.length; i++){
if(scoreArr[i] < min){
min = scoreArr[i];
}
}
return min;
}
private static int getMax(int[] scoreArr) {
int max = scoreArr[0];
for(int i = 1; i < scoreArr.length; i++){
if(scoreArr[i] > max){
max = scoreArr[i];
}
}
return max;
}
private static int[] getScores() {
int[] scores = new int[5];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < scores.length; ) {
System.out.println("请输入第" + (i + 1) + "个分数");
int score = sc.nextInt();
if(score>=0 && score<=100){
scores[i] = score;
i++;
}else{
System.out.println("输入有误,请重新输入");
}
}
return scores;
}
}
数字加密
某系统的数字密码(大于0),比如1983,采用加密方式进行传输。
规则如下:
先得到每位数,然后每位数都加上5 , 再对10求余,最后将所有数字反转,得到一串新数。
举例:
1 9 8 3
+5 6 14 13 8
%10 6 4 3 8
反转 8 3 4 6
加密后的结果就是:8346
把一个数字上的各位数字拆出来分入数组中。为了在数组中能顺序存储位数上的数字,可以起始索引index设为length-1,然后倒着填入数据,具体看代码
getNum()
函数
package com.itheima;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("请输入密码:");
Scanner sc = new Scanner(System.in);
int start = sc.nextInt();
int[] startArr = getNum(start);
for (int i = 0; i < startArr.length; i++) {
startArr[i] = startArr[i] + 5;
startArr[i] = startArr[i] % 10;
}
for (int i = startArr.length-1; i >= 0 ; i--) {
System.out.print(startArr[i]);
}
}
private static int[] getNum(int start) {
int temp = start;
int count = 0;
while(start !=0){
start /=10;
count++;
}
int[] arr = new int[count];
int index = arr.length-1;
while(temp!=0){
int ge = temp % 10;
arr[index] = ge;
temp /= 10;
index--;
}
return arr;
}
}
抽奖
一个大V直播抽奖,奖品是现金红包,分别有{2, 588 , 888, 1000, 10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。打印效果如下:(随机顺序,不一定是下面的顺序)
888元的奖金被抽出
588元的奖金被抽出
10000元的奖金被抽出
1000元的奖金被抽出
2元的奖金被抽出
常规解法是把在奖金池数组中,用一个随机数模拟抽取第x个奖金,然后放入新数组中。之后再奖金池中抽取后需要在新数组确认是否抽取过,如果是则重新抽取。
下面的解法是把奖金池打乱,打乱后顺序输出。
package com.itheima.test;
import java.util.Random;
public class Test10 {
public static void main(String[] args) {
//1.把奖池里面的所有奖项打乱顺序
int[] arr = {2, 588, 888, 1000, 10000};
Random r = new Random();
for (int i = 0; i < arr.length; i++) {
int randomIndex = r.nextInt(arr.length);
int temp = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = temp;
}
//2.遍历奖池,从0索引开始获取每一个奖项
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
双色球
package com.itheima;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//1.随机生成双色球中奖号
int[] winNums = getNumber();
//2.键盘录入用户投注号码
int [] userNums = new int[6];
//输入红球
for (int i = 0; i < userNums.length; i++) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第" + (i+1) + "个红球号码");
userNums[i] = sc.nextInt();
}
//输入蓝球
System.out.println("请输入蓝球号码");
Scanner sc = new Scanner(System.in);
userNums[userNums.length-1] = sc.nextInt();
//3.判断中奖情况
int redCount = 0;
int blueCount = 0;
for (int i = 0; i < userNums.length-1; i++) {
for (int j = 0; j < winNums.length-1; j++) {
if(userNums[i] == winNums[j]){
redCount++;
}
}
}
for (int i = userNums.length-1; i < userNums.length; i++) {
if(userNums[i] == winNums[i]){
blueCount++;
}
}
if(redCount==6&&blueCount==1){
System.out.println("恭喜你,中奖了1000万!");
}else if(redCount==6){
System.out.println("恭喜你,中奖了500万!");
}else if (redCount==5&&blueCount==1){
System.out.println("恭喜你,中奖了3000元!");
}else if (redCount==5){
System.out.println("恭喜你,中奖了200元!");
}else if (redCount==4&&blueCount==1){
System.out.println("恭喜你,中奖了200元!");
}else if (redCount==4){
System.out.println("恭喜你,中奖了10元!");
}else if (redCount==3&&blueCount==1){
System.out.println("恭喜你,中奖了10元!");
}else{
System.out.println("恭喜你,中奖了5元!");
}
}
private static int[] getNumber() {
int[] winNums = new int[7];
//红色球中奖号码
for (int i = 0; i < winNums.length; i++) {
Random random = new Random();
int redNum = random.nextInt(33) + 1;
if(isaBoolean(winNums, redNum)){
winNums[i] = redNum;
}else{
i--;
}
}
//蓝色球中奖号码
for (int i = winNums.length-1; i < winNums.length; i++) {
Random random = new Random();
winNums[i] = random.nextInt(16) + 1;
}
System.out.println("双色球中奖号码为:");
for (int i = 0; i < winNums.length; i++) {
System.out.print(winNums[i] + " ");
}
System.out.println();
return winNums;
}
private static boolean isaBoolean(int[] winNums, int redNum) {
for (int i = 0; i < winNums.length; i++) {
if(winNums[i] == redNum){
return false;
}
}
return true;
}
}
标签:练习题,arr,Java,int,System,length,println,视频教程,out
From: https://blog.csdn.net/2201_75475240/article/details/140891195