Java基本语法学习的案例练习
本文是在学习过C语言后,开始进行Java学习时,对于基本语法的一些案例练习。案例内容来自B站黑马编程课
1.HelloWorld
问题介绍;请编写程序输出“HelloWorld”.
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }
}
1. public class HelloWorld :公共类(Public Class),每个Java源文件中都可以有一个(且只有一个)公共类,这个公共类的名称必须与源文件的名称相同(包括大小写)。
2.main(String [ ] args): 类中包含了一个主方法(main
方法),这是Java程序的入口点。main
方法接受一个字符串数组args
作为参数,这个数组通常用于接收从命令行传递给程序的参数。
3.println:在main
方法内部,调用了System.out.println
方法来在控制台上打印出字符串"Hello World"
。System.out
是Java的标准输出流,而println
是一个方法,用于输出数据并换行。
2.购买飞机票
问题介绍:用户购买机票时,机票原价会按照淡季,旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算用户当前机票的优惠价。
package JAVA_study.src.Text;import java.util.Scanner;public class Text1 {public static void main(String[] age){Scanner sr = new Scanner(System.in);double money = 1000.0; //票价System.out .println("请输入当前月份");int month = sr.nextInt();System.out.println("请输入选择机票种类");String type = sr.next();double place = sed(money,month,type);System.out.println("最终票价为" +place);}public static double sed(double money,int month,String type){double place = 1.0;if(month >= 5 && month <= 10){switch (type) {case "头等舱" : place = 0.9 * money; break;case "经济舱" : place = 0.85 * money;break;}}else {switch (type) {case "头等舱" : place = 0.7 * money; break;case "经济舱" : place = 0.65 * money; break;}}return place;}
}
1.方法(类似于c中的函数)
2.选择语句和判断语句
对于if,else if,以及Switch case 语句和C语言用法是一致的。
3.生成验证码
问题介绍:开发一个程序,可以生成指定位数的验证码,每位可以是数字,大小写字母。
package JAVA_study.src.Text;import java.util.Random;
import java.util.Scanner;public class Text2 {public static void main(String[] args){Scanner sr = new Scanner(System.in);int length = sr.nextInt();System.out.println(code(length));}public static String code(int n){Random r= new Random();String ans = "";for(int i=0;i<n;i++){int type = r.nextInt(3);switch (type) {case 0: ans += r.nextInt(10);break;case 1: char str1 = (char)(r.nextInt(26)+65); ans += str1;break;case 2: char str2 = (char)(r.nextInt(26)+65+32); ans +=str2;break;}}return ans;}
}
1.随机数函数:Random,使用Random(3)生成从0-2的三位随机数,即包含左边,不包含右边。
4.评委打分
问题介绍:在唱歌比赛中,可能有多个评委要给选手打分,分数是[0 -100] 之间的整数。选手最后的得分为:去掉最高分,最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并计算选手的最终得分。
package JAVA_study.src.Text;import java.util.Scanner;public class Text3 {public static void main(String[] arr){Scanner se = new Scanner(System.in);System.out.println("请输入评委人数");int num = se.nextInt();System.out.println("该学生的成绩为"+A(num)+"分");}public static double A(int num){Scanner se = new Scanner(System.in);double ave = 0.0;int MAX = 0;int MIN = 100;int sum = 0;int[] sums = new int [num];for(int i=0;i<num;i++){System.out.println("请输入第"+(i+1)+"位评委的分数");int sr = se.nextInt();sums[i] = sr;sum += sr;if(sr > MAX){MAX = sr;}if(sr < MIN){MIN = sr;}}ave =(sum-MAX-MIN)/(num-2.0);return ave;}
}
//这是没有看视频之前,自己写的,下面是视频代码
/*
import java.util.Scanner;public class Text3 {public static void main(String[] arr){Scanner se = new Scanner(System.in);System.out.println("请输入评委人数");int num = se.nextInt();System.out.println("该学生的成绩为"+A(num)+"分");}public static double A(int num){Scanner se = new Scanner(System.in);double ave = 0.0;int MAX = 0;int MIN = 100;int sum = 0;int[] sums = new int [num];for(int i=0;i<num;i++){System.out.println("请输入第"+(i+1)+"位评委的分数");int sr = se.nextInt();sums[i] = sr;sum += sr;if(sr > MAX){MAX = sr;}if(sr < MIN){MIN = sr;}}ave =(sum-MAX-MIN)/(num-2.0);return ave;}
}*/package JAVA_study.src.Text;import java.util.Scanner;public class Text3 {public static void main(String[] arr) {//目标:完成评委打分案例System.out.println("当前选手的得分是:"+getAverageScore(6));}public static double getAverageScore(int number){//定义一个动态初始化的数组,方便后期存入评委的打分int []scores = new int [number];//遍历数组每一个位置,依次录入评委分数Scanner sc = new Scanner(System.in);for (int i = 0;i<number;i++) {System.out.println("请您录入第"+(i+1)+"个评委的分数");int score = sc.nextInt();scores[i] = score;}int sum = 0; //求总分的变量int max = scores[0];int min = scores[0];//遍历一般找数据for (int i = 0; i < scores.length; i++) {int score =scores[i];sum += score;if(score > max){max= score;}if(score < min){min= score;}}return (sum-min-max)/(number-2.0);}
}
1.for循环:与C语言使用是一致的,for(循环变量;终止条件;变量变化){ 执行语句;}
在IDEA中,可以使用 循环的次数.fori(回车)来快捷输入一个for循环。
2.数据运算:包括四则运算,自增,自减运算都和C语言是一致的,还有浮点数除法除数要加小数点。
5.数字解密
问题介绍:某系统的数字密码是一个四位数,如1983,为了安全,需要加密后再传输,加密规则是:对于密码的每位数,都加5,再对10求余,最后将所有的数字顺序反转,得到一组加密后的新数,请设计出满足本需求的加密程序。
package JAVA_study.src.Text;import java.util.Scanner;public class Text4 {public static void main(String [] ages){Scanner sc = new Scanner(System.in);System.out.println("请输入要加密的数字");int num = sc.nextInt();int number = 1;int s = num;while(s > 1){number++;s=s/10;}int [] a = M(num,number);int result = 0;int p =1;for (int i = number-1; i >= 0; i--) {result += a[i]*p;p *=10;}System.out.println(result);}public static int [] M(int num,int number){int [] arrs = new int[number];for (int i = 0; i < number; i++) {arrs[i] = ((num%10)+5)%10;num = num/10;}return arrs;}
}
1.Java可以直接返回数组!!基本的计算方法与C语言是一致的,这里没有参考视频中的函数写法。
6.数组拷贝
问题介绍:请把一个整型数组,例如存储了数据:11,22,33,拷贝成一个新数组出来
package JAVA_study.src.Text;import java.util.Arrays;
import java.util.Scanner;public class Text5 {public static void main(String []ags){System.out.println("请输入数组元素个数");Scanner sc = new Scanner(System.in);int number = sc.nextInt();int [] arr = new int [number];for (int i = 0; i < number; i++) {System.out.println("请输入第"+(i+1)+"个数组元素");int input = sc.nextInt();arr[i] = input;}int [] result = Copy_arr(arr,number);for(int i=0;i<number;i++){System.out.println(result[i]);
}}public static int []Copy_arr(int []arr,int number){int []new_arr = new int [number];for (int i = 0; i < number; i++) {new_arr[i] = arr[i];}return new_arr;}
}
java提供了许多简单有用的函数来实现一些功能。
1.数组打印:除开for循环外,提供了一种System.out.println(Arrays.toString(result))的实现方法。这行代码的作用是打印数组result
的内容到控制台,每个元素以字符串形式表示,元素之间用逗号加空格分隔,整个数组被方括号包围。
2.数组拷贝:可以不用手动循环拷贝,可以使用System.arraycopy(arr, 0,new_arr, 0, number)
关于arraycopy函数
-
参数解释:
arr
(Object src
):源数组,即你要从中复制数据的数组。0
(int srcPos
):源数组中的起始位置(索引),从该位置开始复制数据。在这个例子中,它是0
,意味着从源数组的第一个元素开始复制。new_arr
(Object dest
):目标数组,即你要将数据复制进去的数组。这个数组必须已经存在,并且有足够的空间来存储要复制的数据。0
(int destPos
):目标数组中的起始位置(索引),从该位置开始放置复制的数据。在这个例子中,它也是0
,意味着从目标数组的第一个元素开始放置数据。number
(int length
):要复制的数组元素的数量。在这里,number
指定了从源数组复制到目标数组的元素数量。
-
操作过程:
-
System.arraycopy
方法会从arr
数组的0
索引位置开始,复制number
个元素到new_arr
数组的0
索引位置。 -
如果
new_arr
数组的长度小于number
,那么将会抛出ArrayIndexOutOfBoundsException
异常,因为目标数组没有足够的空间来存储所有要复制的元素。 -
如果源数组
arr
的长度小于srcPos + length
(在这个例子中是0 + number
),那么同样会抛出ArrayIndexOutOfBoundsException
异常,因为源数组没有足够的元素可供复制。
-
-
注意事项:
- 在使用
System.arraycopy
之前,确保目标数组new_arr
已经被正确初始化,并且有足够的空间来存储要复制的数据。 - 如果源数组和目标数组是同一个数组,并且源位置和目标位置有重叠,那么复制的结果将是未定义的。
- 对于基本数据类型数组和对象数组,
System.arraycopy
都可以正常工作。但是,对于对象数组,复制的是对象的引用,而不是对象本身。
- 在使用
7.抢红包
问题介绍:一个大V直播时发起了抢红包活动,分别有:9.666.188.520.99999五个红包。请模拟粉丝来抽奖,按照先来先得,随机抽取,抽完为止,注意:一个红包只能抽一次,先抽或后抽哪一个红包时随机的。
package JAVA_study.src.Text;import java.util.Random;
import java.util.Scanner;public class Text6 {public static void main(String [] args){//目标:完成抢红包案列的开发int []moneys ={9,666,188,520,99999};start(moneys);}public static void start(int []moneys){Scanner sc = new Scanner(System.in);Random r = new Random();for (int i = 0; i < 5; i++) {System.out.println("请输入任意内容进行抽奖");sc.next(); //等待输入内容按到回车才往下走while(true) {int index = r.nextInt(moneys.length);int money = moneys[index];if (money != 0) {System.out.println("恭喜您,您抽中了红包" + money);moneys[index] = 0;break;}}}System.out.println("活动结束");}
}
8.找素数
问题介绍:判断101-200之间有多少个素数,并输出所有素数
package JAVA_study.src.Text;import java.util.Arrays;public class Text7 {public static void main(String[] args){su();}public static void su(){//目标是从101到200之间的素数int sum;int num =0;int [] result = new int [100];int input = 0;for (int i = 101; i <=200; i++) {sum = 0;for (int i1 = 2; i1 < i; i1++) {if(i%i1 == 0){sum++;}}if(sum == 0){result[input++] = i;num++;}}System.out.println("共有素数"+num+"个");for (int i = 0; i < num; i++) {System.out.println(result[i]+" ");}}}
教学中提供的是信号位思想。使用flat来进行判断。
for (int i = 101; i <=200; i++) {boolean flat = true;for (int i1 = 2; i1 < i; i1++) {if(i%i1 == 0){flat = false;}}if(flat){result[input++] = i;num++;}}
9.打印九九乘法表
问题介绍 打印九九乘法表
public class MultiplicationTable { public static void main(String[] args) { // 外层循环控制行 for (int i = 1; i <= 9; i++) { // 内层循环控制列 for (int j = 1; j <= i; j++) { // 打印乘法表的一项,注意这里j和i的顺序决定了是横向打印还是纵向打印 System.out.print(j + "*" + i + "=" + (i * j) + "\t"); } // 每完成一行的打印后,输出一个换行符以开始新的一行 System.out.println(); } }
}
10.模拟双色球
问题介绍:用户投注7个号码,6个红色,1个蓝色。按照和系统随机出的这组号码判断中奖金额。
package JAVA_study.src.Text;import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;public class Text8 {public static void main(String[] args) {int [] a1 = inputarr();System.out.println(Arrays.toString(a1));int [] a2 = suijiarr();System.out.println(Arrays.toString(a2));cmp(a1,a2);}public static int[] inputarr() {int[] arr = new int[7];Scanner sc = new Scanner(System.in);for (int i = 0; i < 6; i++) {while (true) {System.out.println("请输入第" + (i + 1) + "位红球号码");int num = sc.nextInt();if (num < 1 || num > 33) {System.out.println("号码有误 请检查");} else {if (exist(arr, num)) {System.out.println("输入的号码重复 请重试");} else {arr[i] = num;break;}}}}while (true) {System.out.println("请输入蓝球号码");int num = sc.nextInt();if (num < 1 || num > 16) {System.out.println("号码有误 请检查");} else {arr[6] = num;break;}}return arr;}public static int[] suijiarr() {int[] arr = new int[7];Random r = new Random();for (int i = 0; i < 6; i++) {while (true) {int n = r.nextInt(33)+1;if (!exist(arr, n)) {arr[i] = n;break;}}}while (true) {int n = r.nextInt(17)+1;if (!exist(arr, n)) {arr[6] = n;break;}}return arr;}private static boolean exist( int[] arr, int num){for (int i = 0; i < 7; i++) {if(arr[i] ==0){break;}if (arr[i] == num) {return true;}}return false;}public static void cmp(int []a1,int []a2){int redcount=0,bluecount=0;for (int i = 0; i < 6; i++) {for (int j = 0; j < 6; j++) {if(a1[i] == a2[j]){redcount ++;break;}}}if(a1[6] == a2[6]){bluecount++;}switch(redcount){case 6:if(bluecount == 1){System.out.println("恭喜您中奖 1000万元");break;}else{System.out.println("恭喜您中奖 500万元");break;}case 5:if(bluecount == 1){System.out.println("恭喜您中奖 3000元");break;}else{System.out.println("恭喜您中奖 200元");break;}case 4:if(bluecount == 1){System.out.println("恭喜您中奖 200元");break;}else{System.out.println("恭喜您中奖 10元");break;}case 3:if(bluecount == 1){System.out.println("恭喜您中奖 10元");break;}else{System.out.println("恭喜您中奖 5元");break;}case 2:if(bluecount == 1){System.out.println("恭喜您中奖 5元");break;}case 1:if(bluecount == 1){System.out.println("恭喜您中奖 5元");break;}case 0:if(bluecount == 1){System.out.println("恭喜您中奖 5元");break;}System.out.println("很遗憾 您没有中奖");break;}}}
相关文章:

Java基本语法学习的案例练习
本文是在学习过C语言后,开始进行Java学习时,对于基本语法的一些案例练习。案例内容来自B站黑马编程课 1.HelloWorld 问题介绍;请编写程序输出“HelloWorld”. public class HelloWorld { public static void main(String[] args) { System.out.print…...

FPGA实现LCD12864控制
目录 注意! a) 本工程采用野火征途PRO开发板,外接LCD12864部件进行测试。 b) 有偿提供代码!!!可以定制功能!!!有需要私信!!! c) 本文测试采用…...
mysql 批量执行sql语句脚本
有时候我们需要批量执行多个数据库的创建和数据创建执行可以通过下面脚本批量创建和执行脚本。我们只需要在sql命令行或者客户端执行下面一个脚本批量创建执行多个库的创建和执行 xxxxinit.sql create user root% identified by test; mysql -h 192.168.17.7 -u root -p mysq…...
【Git】Git概述
一、Git的基本概念和特点 基本概念: 仓库(Repository):Git存储代码的基本单位,包含项目的所有文件和历史提交记录。Git支持本地仓库和远程仓库,本地仓库存储在开发者的计算机上,而远程仓库通常…...

【图解网络】学习记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 TCP/IP 网络模型有哪几层?键入网址到网页显示,期间发生了什么?Linux 系统是如何收发网络包的?NAPIHTTP 是什么&#…...

【Vulnhub系列】Vulnhub_Seattle_003靶场渗透(原创)
【Vulnhub系列靶场】Vulnhub_Seattle_003靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境准备 1、从百度网盘下载对应靶机的.ova镜像 2、在VM中选择【打开】该.ova 3、选择存储路径࿰…...

java: 错误: 无效的源发行版:17
错误现象: java: 错误: 无效的源发行版:17 背景:在配置一个springboot项目时候,报出这个错误,错误提示信息很简单,很模糊。 排查:百度后,推测大概率就是pom文件的配置问题…...

【Python机器学习】k-近邻算法简单实践——识别手写数字
为了简化理解,需要识别的数字已经使用图形处理软件,处理成具有相同的色彩和大小32*32的黑白图像,并转换成文本格式 准备数据:将图像转换为测试向量 实际图像存储在trainingDigits的2000个例子和testDigits中的900个测试数据 我们…...

Linux源码阅读笔记14-IO体系结构与访问设备
IO体系结构 与外设通信通常称为输入输出,一般缩写为I/O。在实现外设IO的时候,内核必须处理三个可能出现的问题: 必须根据具体的设备类型和模型,使用各种方法对硬件寻址。内核必须向用户应用程序和系统工具提供访问各种设备的方法…...

只出现一次的数字-位运算
题目描述: 个人题解: 代码实现: class Solution { public:int singleNumber(vector<int>& nums) {int ret 0;for (auto e: nums) ret ^ e;return ret;} };复杂度分析: 时间复杂度:O(n),其中 n…...

pyqt designer使用spliter
1、在designer界面需要使用spliter需要父界面不使用布局,减需要分割两个模块选中,再点击spliter分割 2、在分割后,再对父界面进行布局设置 3、对于两边需要不等比列放置的,需要套一层 group box在最外层进行分割...

【ROS 最简单教程 002/300】ROS 集成开发环境安装 (虚拟机版): Noetic
💗 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑,能帮忙解决的我会尽力 ! 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 👉 保姆级图文安装教程指路,有经验的话 可以用如下资源自行安装 ITEMREFERENCE…...

防洪评价报告编制方法与水流数学模型建模技术
原文链接:防洪评价报告编制方法与水流数学模型建模技术https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247610610&idx2&sn432d30cb40ec36160d635603c7f22c96&chksmfa827115cdf5f803ddcaa03a21e3721d6949d6a336062bb38170e3f9d5bd4d391cc36cc…...

【Python学习手册(第四版)】学习笔记10-语句编写的通用规则
个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文较简单,5-10分钟即可阅读完成。介绍Python基本过程语句并讨论整体语法模型通用规则(冒号、省略、终止、缩进、其他特殊情况࿰…...

Flink笔记整理(五)
Flink笔记整理(五) 文章目录 Flink笔记整理(五)七、处理函数(最底层最常用最灵活)7.1基本处理函数(ProcessFunction)处理函数的功能和使用ProcessFunction解析 7.2按键分区处理函数&…...

数据分析概要【数据分析---偏企业】
各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 数据分析概要前 必看 Python 初阶 Python–语言基础…...

PDF编辑器大分享,这三款加速PDF编辑!
嘿,各位办公室的小伙伴们,今儿咱们来聊聊那些让咱们文员生活变得更加轻松愉快的神器——PDF编辑器!作为每天跟文档打交道的“文字魔术师”,选对工具那可真是事半功倍啊。今天,我就从我的亲身体验出发,给大伙…...

Python --Pandas库基础方法(2)
文章目录 Pandas 变量类型的转换查看各列数据类型改变数据类型 重置索引删除行索引和切片seriesDataFrame取列按行列索引选择loc与iloc获取 isin()选择query()的使用排序用索引排序使用变量值排序 修改替换变量值对应数值的替换 数据分组基于拆分进行筛选 分组汇总引用自定义函…...

《Programming from the Ground Up》阅读笔记:p75-p87
《Programming from the Ground Up》学习第4天,p75-p87总结,总计13页。 一、技术总结 1.persistent data p75, Data which is stored in files is called persistent data, because it persists in files that remain on disk even when the program …...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...
嵌入式常见 CPU 架构
架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...