顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票。
// 定义数组存放10件商品的价格
double[] price = new double[10];
// 创建Scanner扫描器
Scanner input = new Scanner(System.in);
// 定义变量存放商品和
double sum = 0;
// 循环接收商品价格
for(int i=0;i<price.length;i++){
System.out.println("请输入第"+(i+1)+"件商品的价格:");
price[i] = input.nextDouble();
// 累加求和
sum = sum + price[i];
}
// 关闭Scanner资源,释放内存
sc.close();
// 打印小票
System.out.println("************购物小票************");
// 遍历数组,取数组中的数据
for(int i=0;i<price.length;i++){
System.out.println("第"+(i+1)+"商品价格为:"+price[i]);
}
System.out.println("您的应付总金额为:"+sum+"元");
打印扑克牌
效果如图所示
// 花色数组
String[] a = {"黑桃","红桃","梅花","方片"};
// 点数数组
String[] b = {"A","2","3","4", "5","6","7","8","9","10","J","Q","K"};
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
// 拼接字符串
System.out.print(a[i] + b[j] + " ");
}
// 输出换行
System.out.println();
}
模拟在一副牌中,抽取第1张,第5张,第50张扑克牌。
效果如图所示:
String[] colors={"黑色","红桃","梅花","方块"};
String[] nums={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
// 获取所有扑克牌
// 4*13=52种排列组合 加上 一张 小王 一张 大王 54张牌
String[] puke = new String[54];
int index = 0;
for (int i = 0; i < colors.length; i++) {
for (int j = 0; j < nums.length; j++) {
// index 从0 到51
puke[index] = colors[i]+nums[j];
index ++;
}
}
puke[52] = "小王";
puke[53] = "大王";
// 抽取指定的三种扑克牌
int num1 = 1;
int num2 = 5;
int num3 = 50;
// 数组索引从0开始 第一张牌索引为0 第五张牌索引为4 第50张牌索引为49
String[] pk3 = new String[3];
pk3[0] = puke[num1 - 1];
pk3[1] = puke[num2 - 1];
pk3[2] = puke[num3 - 1];
// 打印抽取的牌
for (int i = 0; i < pk3.length; i++) {
System.out.print(pk3[i] + " ");
}
实现数组元素的复制。
int[] arr = {1,2,3,4,5,6,7}; int[] brr = new int[10];
要求:把arr的第3个到第5个 元素 复制到 brr的第7个到第9个元素。(必须使用循环)
并且打印brr的内容验证是否成功。
int[] arr = {1,2,3,4,5,6,7};
int[] brr = new int[10];
// 复制arr的第3个到第5个元素到brr的第7个到第9个元素
for (int i = 0; i < 3; i++) {
brr[i+6] = arr[i+2];
}
// 打印brr的内容
System.out.println("brr数组的内容为:");
for (int i = 0; i < brr.length; i++) {
System.out.print(brr[i] + " ");
}
实现数组元素的删除(去重)
int[] arr = {1,2,3,4,4,5,6,7};
要求删除重复的元素4(删除一个),并且把后面的元素前移,最后一个元素不用管。
并且打印arr的内容验证是否成功。
//Arrays 去重
//Java是面向对象编程
//C是面向过程编程
int[] arr = {1,2,3,4,4,5,6,7};
int[] arr2=Arrays.stream(arr).distinct().toArray();
int[] arr = {1,2,3,4,4,5,6,7};
// 去除数组重复元素,记住以下公式即可
int len = arr.length;
// 用于遍历数组中的每个元素
for (int i = 0; i < len; i++) {
// 用于比较当前元素与后面的每个元素是否相等
for (int j = i + 1; j < len; j++) {
if (arr[j] == arr[i]) {
// 将重复的元素后面的元素向前移动一个位置,覆盖掉重复的元素
for (int k = j; k < len - 1; k++) {
arr[k] = arr[k + 1];
}
// 数组的长度减1
len--;
// 内层循环的索引j减1,以确保下一轮循环正确比较被移动后的元素
j--;
}
}
}
// 创建一个新的数组,将去除重复元素后的元素复制到新数组中
int[] newArr = new int[len];
for (int i = 0; i < len; i++) {
newArr[i] = arr[i];
}
System.out.print("去重后的数组为:");
for (int i = 0; i < len; i++) {
System.out.print(newArr[i] + " ");
}
System.out.println();
随机排名 ( 打乱数据 )
某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。
请先依次录入5名员工的工号,然后展示出一组随机的排名顺序。
22 33 35 13 88 -----------13 35 88 33 22
分析
在程序中录入5名员工的工号存储起来 ---> 使用数组。
依次遍历数组中的每个元素,随机一个索引数据,让当前元素与该索引位置处的元素进行交换。
Scanner scanner = new Scanner(System.in);
int[] num = new int[5]; // 存储员工工号的数组
// 录入员工工号
for (int i = 0; i < num.length; i++) {
System.out.print("请输入第" + (i + 1) + "名员工的工号:");
num[i] = scanner.nextInt();
}
// 随机排名
Random random = new Random();
for (int i = 0; i < num.length; i++) {
int index = random.nextInt(num.length);
int temp = num[i];
num[i] = num[index];
num[index] = temp;
}
// 展示随机的排名顺序
System.out.println("排名顺序:");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
开发一个幸运小游戏,游戏规则如下:
游戏后台随机生成1-20之间的5个数(无所谓是否重复),然后让大家来猜数字:
未猜中提示:“未命中”,并继续猜测
猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的索引位置,最后把数组中的5个数据都输出看一下, 然后结束本游戏。
分析
随机生成5个1-20之间的数据存储起来 ---> 使用数组
定义一个死循环,输入数据猜测,遍历数组,判断数据是否在数组中,如果在,进行对应提示并结束死循环;如果没有猜中,提示继续猜测直到猜中为止。
int[] numbers = new int[5];
Random random = new Random();
for (int i = 0; i < numbers.length; i++) {
numbers[i] = random.nextInt(20) + 1;
}
System.out.println("游戏开始!");
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入一个1-20之间的数字:");
int guess = scanner.nextInt();
boolean found = false;
for (int i = 0; i < numbers.length; i++) {
if (numbers[i] == guess) {
System.out.println("运气不错,猜中了!");
System.out.println("猜中的数字第一次出现的索引位置为:" + i);
System.out.print("数组中的数字为:");
for (int j = 0; j < numbers.length; j++) {
System.out.print(numbers[j] + " ");
}
System.out.println();
found = true;
break;
}
}
if (found) {
break;
} else {
System.out.println("未命中,继续猜测!");
}
}
System.out.println("游戏结束!");
某公司采用公用电话传递数据,数据是4位整数,在传递过程中是加密的,加密规则如下:每位上的数字加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,编写一个程序,用于接受一个4位整数,并且打印输出加密后的数字
比如:
输入的数字为: 1345
每位上的数字加上5,然后用和除以10的余数代替该数字: 6890
将第一位和第四位交换,第二位和第三位交换0986
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个4位整数:");
int number = scanner.nextInt();
int[] num = new int[4];
for (int i = 3; i >= 0; i--) {
num[i] = (number % 10 + 5) % 10;
number /= 10;
}
// 交换位置
int temp = num[0];
num[0] = num[3];
num[3] = temp;
temp = num[1];
num[1] = num[2];
num[2] = temp;
System.out.print("加密后的数字为:");
for (int a : num) {
System.out.print(a);
}
石头剪刀布游戏
电脑随机生成选择(石头、剪刀、布)
用户输入自己的选择(石头、剪刀、布)
0表示石头,1表示剪刀,2表示布
根据用户和电脑的选择,输出游戏结果(用户胜利、电脑胜利、平局)
程序可以进行多轮游戏,直到用户选择退出为止;
并且记录用户玩了多少轮。
对于每一轮游戏,程序需要输出当前轮数和用户和电脑的选择以及游戏结果
提示: String[] choices = {"石头", "剪刀", "布"};
参考代码:
Scanner scanner = new Scanner(System.in);
Random random = new Random();
String[] choices = {"石头", "剪刀", "布"};
int userWins = 0;
int round = 1;
System.out.println("欢迎来玩石头剪刀布游戏!");
while (true) {
round++;
System.out.print("请输入你的选择(0表示石头,1表示剪刀,2表示布,-1表示结束游戏):");
int userChoice = scanner.nextInt();
if (userChoice == -1) {
System.out.println("游戏结束");
break;
}
if (userChoice < 0 || userChoice > 2) {
System.out.println("无效的选择,请重新输入!");
continue;
}
int computerChoice = random.nextInt(3);
System.out.println("你的选择:" + choices[userChoice]);
System.out.println("电脑的选择:" + choices[computerChoice]);
if (userChoice == computerChoice) {
System.out.println("平局!");
} else if ((userChoice == 0 && computerChoice == 1) || (userChoice == 1 && computerChoice == 2)
|| (userChoice == 2 && computerChoice == 0)) {
System.out.println("你赢了!");
userWins++;
} else {
System.out.println("你输了!");
}
if (userWins > 0) {
System.out.println("你已经赢了" + userWins + "轮,游戏结束!");
break;
}
round++;
}
开发部有15名员工,编写一个程序,用于接收每个员工的年龄,计算并输出开发部员工的平均年龄,最大年龄及最小年龄。
参考代码:
// 定义数组存放15名员工的年龄
int[] ages = new int[15];
// 创建Scanner扫描器
Scanner input = new Scanner(System.in);
// 定义变量存放年龄和
int sum = 0;
// 循环接收员工的年龄,在数组中存储数据
for(int i=0;i<ages.length;i++){
System.out.println("请输入第"+(i+1)+"个员工的年龄");
ages[i] = input.nextInt();
// 累加求和
sum = sum+ages[i];
}
// 关闭Scanner资源,释放内存
sc.close();
// 定义变量存放最大年龄
int max = ages[0];
// 定义变量存放最小年龄
int min = ages[0];
// 循环遍历 从数组中取数据进行比较
for(int i=1;i<ages.length;i++){
if(ages[i]>max){
max = ages[i];
}
if(ages[i]<min){
min=ages[i];
}
}
System.out.println("\n员工的平均年龄是:"+sum/ages.length);
System.out.println("最大员工年龄是:"+max);
System.out.println("最小员工年龄是:"+min);
编写学生信息管理系统项目中的模块功能----考试成绩的管理
先输入参加考试的人数,然后输入考生姓名和考试成绩,存入数组中。
然后计算出平均分和最高分,并打印出最高分的考生的姓名(有可能多个姓名)。
Scanner sc = new Scanner(System.in);
System.out.println("请输入考生人数");
int num = sc.nextInt();
if(num <= 0){
System.out.println("人数错误");
return;
}
String[] names = new String[num];
int[] scores = new int[num];
// 循环接收学生姓名和成绩,在数组中存储数据
for(int i=0;i<names.length;i++){ // 输入姓名和成绩
System.out.println("请输入第"+(i+1)+"位考生姓名");
names[i] = sc.next();
System.out.println("请输入"+(i+1)+"位考生成绩");
scores[i] = sc.nextInt();
}
// 关闭Scanner资源,释放内存
sc.close();
double sum = 0;
int max = scores[0];
// 循环遍历 从数组中取数据进行比较
for(int i=0;i<scores.length;i++){// 计算总分和最高分
sum = sum + scores[i];
if(max < scores[i]){
max = scores[i];// 最大值的算法
}
}
System.out.println("平均分:"+sum/num);
System.out.println("最高分:"+max);
for(int i=0;i<scores.length;i++){
if(scores[i] == max) {
System.out.print("最高分的考生的姓名是"+names[i] + " ");
}
}
写一个抽奖程序。
奖项包括: 一等奖(2个)、二等奖(5个)、三等奖(10)、四等奖(20)、普及奖(安慰奖)。
模拟40个员工的直接抽奖(使用随机数),打印抽奖的结果。
注意: 1、2、3、4等奖 不能超过自己的次数,普及奖随意(1000个)
int[] arr = {2,5,10,20,10000};
String[] names = {"一等奖","二等奖","三等奖","四等奖","普及奖"};
Random ran = new Random();
for(int i=0;i<40;i++){ //模拟40次抽奖
int num = ran.nextInt(arr.length); // 随机下标 得到 随机的数据
if(arr[num] == 0){ // 该奖项已经发完了
i--; // 本次循环失效,继续本次循环;先 i-- 再 i++ 等价于 i不动
}else{ // 奖项没有发完
arr[num]--; // 奖项的次数减少1
System.out.println(names[num]);
}
}
班上有3位学生,每位学生有3门成绩(HTML、JAVA、C++),接收用户输入的学生的成绩进行存储,并计算每位学生的成绩总分和平均分,最后以表格的形式输出。
要求分别使用一维数组和二维数组各写一个
//一维数组:
int[] htmls = new int[3];
int[] javas = new int[htmls.length];
int[] cs = new int[htmls.length];
Scanner in = new Scanner(System.in);
for(int i=0; i<htmls.length; i++){
System.out.println("请输入第"+ (i+1) + "个同学的HTML成绩:");
htmls[i] = in.nextInt();
System.out.println("请输入第"+ (i+1) + "个同学的JAVA成绩:");
javas[i] = in.nextInt();
System.out.println("请输入第"+ (i+1) + "个同学的C++成绩:");
cs[i] = in.nextInt();
}
System.out.println();
System.out.println("HTML\tJAVA\tC++\t总分\t平均分");
for (int i=0; i<htmls.length; i++) {
System.out.print(htmls[i] +"\t"); // html
System.out.print(javas[i] +"\t"); // java
System.out.print(cs[i] +"\t"); // c++
int sum = htmls[i] + javas[i] + cs[i];
System.out.print(sum+"\t"); // 总分
System.out.print(sum / 3 +"\t"); // 平均分
System.out.println();
}
// 二维数组的定义
// 定义时赋值
// double[][] scores = {{52,56,54},{85,80,87},{74,75,79},{90,95,94},{62,69,62}};
double[][] scores = new double[5][3];
// 创建扫描器
Scanner input = new Scanner(System.in);
// 接收学生分数
for(int i = 0;i < scores.length ;i++){ // 外层循环控制行
for(int j=0;j<scores[i].length;j++){ // 内层循环控制列
System.out.println("请输入第"+(i+1)+"个学生的第"+(j+1)+"个分数:");
scores[i][j] = input.nextDouble();
}
}
// 输出学生分数
System.out.println("\n学生分数列表");
System.out.println("HTML\tJAVA\tC++\t总分\t平均分");
for(int i = 0;i < scores.length ;i++){ // 外层循环控制行
double sum=0; // 存放总分
for(int j=0;j<scores[i].length;j++){ // 内层循环控制列
System.out.print(scores[i][j]+"\t");
sum = sum + scores[i][j];
}
System.out.println(sum+"\t"+sum/3);
}
接收并输出某公司某月的考勤和扣款信息,假设公司有4个员工,每个员工的考勤项有上下班忘打卡、迟到、早退、旷工,其中上下班忘打卡扣款10元/次,迟到和早退扣款为20元/次,旷工100元/天,参考图如下(参考图中是以3个员工为例):
提示:使用二维数组
int[][] staff = new int[4][5]; //定义4个员工 5条数据
Scanner s = new Scanner(System.in);
for (int i = 0; i < staff.length; i++) {
System.out.println("请输入第"+(i+1)+"个员工的编号:");
staff[i][0] = s.nextInt();
System.out.println("请输入第"+(i+1)+"个员工的忘记打卡次数:");
staff[i][1] = s.nextInt();
System.out.println("请输入第"+(i+1)+"个员工的迟到次数:");
staff[i][2] = s.nextInt();
System.out.println("请输入第"+(i+1)+"个员工的早退次数:");
staff[i][3] = s.nextInt();
System.out.println("请输入第"+(i+1)+"个员工的矿工次数:");
staff[i][4] = s.nextInt();
}
int price=0; // 定义罚款数为0
System.out.println("********************本月考勤信息**************");
System.out.println("员工编号"+" "+"忘记打卡"+" "+"迟到"+" "+"矿工"+" "+"总罚款(单位元)");
for (int i = 0; i < staff.length; i++) {
System.out.print(staff[i][0]+" "+staff[i][1]+" "+staff[i][2]+" "+staff[i][3]+" "+staff[i][4]);
price=(staff[i][1]*10) + (staff[i][2]+staff[i][3])*20 + (staff[i][4])*100;
System.out.println(" "+price);
}
一家贸易公司有四位销售员,每位销售员负责销售四件商品,编写一个程序,接收每名销售员销售的各类产品的数量。打印产品销售明细表,明细表包括每类产品的销售总数,以及每位销售员销售的产品数量占总销售的百分比。
使用以下公式:
销售员N销售的产品A的百分比=(销售员N售出的产品A的销售量/总销售量)*100
总销售量指各类产品销售量的总和
提示:使用二维数组
int[][] staff=new int[2][4];
Scanner scanner=new Scanner(System.in);
for (int i = 0; i < staff.length; i++) {
System.out.println("请输入"+(i+1)+"销售员,销售产品A的数量");
staff[i][0]=scanner.nextInt();
System.out.println("请输入"+(i+1)+"销售员,销售产品B的数量");
staff[i][1]=scanner.nextInt();
System.out.println("请输入"+(i+1)+"销售员,销售产品C的数量");
staff[i][2]=scanner.nextInt();
System.out.println("请输入"+(i+1)+"销售员,销售产品D的数量");
staff[i][3]=scanner.nextInt();
}
scanner.close();
int Anum =staff[0][0]+staff[1][0];
int Bnum =staff[0][1]+staff[1][1];
int Cnum =staff[0][2]+staff[1][2];
int Dnum =staff[0][3]+staff[1][3];
System.out.println();
System.out.println("产品销售情况汇总表");
System.out.println("~~~~~~~~~~~~~~~~~~~~~~~");
System.out.println("产品 A B C D");
System.out.println("销售总数" +Anum+" " +Bnum+" " +Cnum+" " +Dnum);
System.out.println("产品销售百分比明细表");
System.out.println("--------------------------------------");
System.out.println("销售员 产品");
System.out.println("--------------------------------------");
System.out.println(" A B C D 合计");
//销售员N销售的产品A的百分比=(销售员N售出的产品A的销售量/总销售量)*100
//总销售量指各类产品销售量的总和
int sum2=0;
int sum=Anum+Bnum+Cnum+Dnum;
for (int i = 0; i < staff.length; i++) { //销售员i销售 的每个产品
for (int j = 0; j < staff[i].length; j++) {
System.out.print(i+1);
int precent =(staff[i][j]/sum);
System.out.print(" "+precent);
sum2=sum2+precent;
}
System.out.println(" "+sum2);
System.out.println();
}