编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字。随机点名器具备3个功能,包括存储全班同学姓名、总览全班同学姓名和随机点取其中一人姓名。比如随机点名器首先分别向班级存入张飞、刘备和关羽这3位同学的名字,然后总览全班同学的姓名,打印出这3位同学的名字,最后在这3位同学中随机选择一位,并打印出他的名字,至此随机点名成功。
2、任务目标
学会分析“随机点名器”任务实现的逻辑思路。
能够独立完成“随机点名器”的源代码编写、编译及运行。
能够根据“随机点名器”程序功能的不同,将功能封装到不同的方法中。
能够使用数组解决多个同学姓名的存储问题。
掌握方法和数组的使用。
3、设计思路(实现原理)
(1)在存储同学姓名时,如果对每一个同学都定义一个变量进行姓名存储,则会出现过多孤立的变量,很难一次性将全部数据持有。此时,可以使用数组解决多个数据的存储问题。创建一个可以存储多个同学姓名的数组,打算存几个同学姓名就创建相应长度的数组。
(2)键盘输入同学姓名,将输入的姓名依次赋值给数组各元素,此时便存储了全班同学姓名。键盘输入需要使用Scanner 类,以下代码能够从键盘输入中读取一个字符串:
Scanner sc = new Scanner(System.in);
String str= sc.next();
(3)对数组进行遍历,打印出数组中每个元素的值,即实现了对全班每一位同学姓名的总览;
(4)根据数组长度,获取随机索引,例如数组长度为3,则获取的随机索引只能在0~2之间,通过随机索引获取数组中的姓名,该姓名也就是随机的姓名。获取随机索引可以使用Random类中的nextInt(int n)方法。
(5)“随机点名器”明确地分为了三个功能,如果将多个独立功能的代码写到一起,则代码相对冗长,可以针对不同的功能将其封装到不同的方法中,将完整独立的功能分离出来,然后只需要在程序的main()方法中调用这3个方法即可。
二、实验实现
随机点名器程序的实现代码:
package com.java.zjlyyds;
import java.util.Random;
import java.util.Scanner;
public class test3 {
private static Scanner myScanner;
public static void main(String[] args) {
// 1.初始化学生数组
String[] student = new String[3];
scanfStudentArray(student);//输入学生
printStudentArry(student);//输出学生
myScanner=new Scanner(System.in);
while(true){
System.out.println(“请输入1进行随机点名,输入0结束”);
int cnt = myScanner.nextInt();
//2.产生一个随机数(0~学生数-1)
int randNum=new Random().nextInt(student.length);
//3.输出随机数对应的学生姓名
if(cnt == 1)
System.out.println(“随机选择的同学是:”+student[randNum]);
else
break;
}
}
private static void printStudentArry(String[] student) {
for (int i = 0; i < student.length; i++) {
System.out.print(student[i]+" ");
}
System.out.println();
}
private static void scanfStudentArray(String[] student) {
myScanner=new Scanner(System.in);
for (int i = 0; i < student.length; i++) {
System.out.println(“请输入第”+(i+1)+“个学生的姓名:”);
student[i]=myScanner.next();
}
}
}
运行结果截图为图1-1:
三、实验总结
在文件2-1中,第1018行代码定义了一个addStudentName()方法,用于实现存储全班同学姓名的功能,其中通过创建一个String类型的数组students来存储多个同学的姓名,借助Scanner类通过键盘输入的方式输入同学的姓名,并将这些姓名依次存储到数组元素中;第2330行代码定义一个printStudentName()方法,用于实现总览全班同学姓名的功能,通过遍历数组students的方式打印全班每一位同学的姓名;第35~42行代码定义一个randomStudentName()方法,用于实现随机点名其中一人的功能,通过Random类的nextInt(intn)方法获取随机索引,然后根据随机索引从数组中获取姓名,这个姓名就是随机点名到的同学姓名。
一、实验描述
1、考核知识点
名 称:变量的类型转换
2、练习目标
掌握不同数据类型间的强制类型转换
3、需求分析
强制类型转换也叫显式类型转换,指的是两种数据类型之间的转换需要进行显式地声明。例如,两种类型彼此不兼容,或者目标类型取值范围小于源类型,都需要进行强制类型转换。
4、设计思路(实现原理)
1)编写一个类Example02
2)在Example02中的main()方法中定义一个int类型的变量i和byte类型的变量b,并将变量i的值赋给变量b
3)使用println语句打印出变量b的值
二、实验实现
代码:
static byte Example02(int i,byte b)
{
b=(byte)i;
System.out.println(b);
return b;
}
public static void main(String[] args)
{
//实验1-2 变量的强制类型转换
int i=3;
byte b=0;
Example02(i,b);
}
运行结果截图为图1-2:
图1-2运行结果
三、实验总结
1、强制类型转换,具体格式如下:
目标类型 变量 = (目标类型)值
2、在对变量进行强制类型转换时,会发生取值范围较大的数据类型向取值范围较小的数据类型的转换,如将一个int类型的数转为byte类型,这样做极容易造成数据精度的丢失。int在内存中占用4个字节。byte类型的数据在内存中占用1个字节,当将变量i的数据在内存中占的内存大于1个字节时,前面3个高位字节的数据会丢失,数值也会发生改变。
一、实验描述
1、考核知识点
名称:运算符的优先级
2、练习目标
掌握运算符之间的优先级
3、需求分析
当使用不同的运算符进行运算时,应该按照一定的顺序进行运算,即根据运算符的优先级进行运算。
4、设计思路(实现原理)
1)编写一个类Example03
2)在main方法中定义两个int型变量x和y
3)将表达式3>2*x?x++:–x赋值给y
4)用输出语句分别输出变量x和y的值
二、实验实现
代码:
public static int Example03(int x,int y)
{
y=3>2*x?x++:–x;
System.out.printf(“%d,%d”,x,y);
return y;
}
//实验1-3 运算符的优先级
int x=1;
int y=3;
Example03(x,y);
运行结果截图为图1-3:
图1-3运行结果
三、实验总结
1.本实验中表达式的运算过程如下所示:
1)在表达式y=3>2*x?x++:–x;中赋值运算符=的优先级最低,所以要先运算=右侧的表达式;
2)?:为三元运算符,该运算符的优先级较低,要先运算?前面的表达式。
3)的优先级比>的高,所以3>21为true。按照三元运算符的运算规则表达式等价于y=x++
4)x++的++在后面,所以要先进行其它运算再自增,最后结果为x=2,y=1
2、下表列举了Java中运算符的优先级,数字越小优先级越高。
3、其实没有必要去刻意记忆运算符的优先级。由于运算符“()”的优先级最高,编写程序时,尽量使用括号“()”来实现想要的运算顺序,以免产生歧义。
一、实验描述
1、考核知识点
名称:if条件语句
2、练习目标
掌握if条件语句的语法格式
了解if条件语句的执行流程
3、需求分析
if…else if…else语句用于对多个条件进行判断,进行多种不同的处理。本实验使用if…else if…else语句实现判断某月是哪个季节的功能。
设计思路(实现原理)
1)编写一个类Example04
2)定义一个变量month用于存储月份。
3)用if条件语句,判断这个月份在哪一个季节并输出结果,如:春季是3、4、5月,夏季是6、7、8月,秋季是9、10、11月,冬季是12、1、2月
4)由于一年只有12个月,所以要过滤除1-12以外的月份值
二、实验实现
代码:
package com.java.zjlyyds;
import java.util.Scanner;
public class test1 {
private static Scanner myScanner;
public static int Example04(int month)
{
while(month>=1&&month<=12)
{
if(month>=3&&month<=5)
{
System.out.println(“春季!”);
}
else if(month>5&&month<=8)
{
System.out.println(“夏季!”);
}
else if(month>8&&month<=11)
{
System.out.println(“秋季!”);
}
else
{
System.out.println(“冬季!”);
}
break;
}
return month;
}
public static void main(String[] args)
{
实验1-4 if条件语句
myScanner = new Scanner(System.in);
System.out.println(“请输入”);
int month = myScanner.nextInt();
Example04(month);
}
}
运行结果截图为图1-4:
图1-4运行结果
三、实验总结
1、f…else if…else语句用于对多个条件进行判断,进行多种不同的处理。if…else if…else语句具体语法格式如下:
if (判断条件1) {
执行语句1
} else if (判断条件2) {
执行语句2
}
…
else if (判断条件n) {
执行语句n
} else {
执行语句n+1
}
if…else if…else语句的执行流程如图1-5所示。
图1-5流程图
2、因为一年只有12个月,所以当month>12时是不符合逻辑的数据,这时会打印“没有这个月份”。在编程过程中,经常要考虑程序在实际环境下是否符合逻辑需求。
3、“||”表示或操作,当运算符两边的操作数任何一边的值为true时,其结果为true,当两边的值都为false时,其结果才为false。所以只要符合三个条件中的一个就会被判断为这个季节。
一、实验描述
1、考核知识点
名称:switch条件语句
2、练习目标
熟悉switch条件语句的语法格式
了解switch条件语句的特点
3、需求分析
switch 条件语句也是一种很常用的选择语句,和if条件语句不同,它只能针对某个表达式的值作出判断,从而决定程序执行哪一段代码。本实验使用switch 条件语句实现判断选择题对错的功能。
4、设计思路(实现原理)
1)编写一个类Example05
2)定义一个变量answer用于存储答案选项
3)用switch条件语句判断如果变量answer为B则正确,其它则错误
4)如果变量answer不等于ABCD四个选择则打印“不存在此选项”
二、实验实现
代码:
package com.java.zjlyyds;
import java.util.Scanner;
public class test2 {
private static Scanner myScanner;
public static void main(String[] args) {
System.out.println(“请输入答案:”);
myScanner=new Scanner(System.in);
char answer= myScanner.next().charAt(0);
switch(answer)
{
case ‘B’:System.out.println(“正确”);break;
case ‘A’:
case ‘C’:
case ‘D’:System.out.println(“错误”);break;
default:System.out.println(“不存在此选项”);
}
}
}
运行结果截图为图1-6:
图1-6运行结果
三、实验总结
1、switch语句的执行流程是:根据表达式的值查找与其匹配的项,如果有匹配项,则执行该匹配项下面的语句。如果没有匹配项,就会执行default后面的语句。
2、switch关键字后括号内的表达式可以是byte,short,int,char四种类型;在JDK5以后表达式可以是枚举;在.JDK7以后表达式可以是字符串。
3、switch语句只适合判断若干值的情况,不适合判断范围。
4、if和switch都可以判断值的情况,这时应该使用switch语句,因为switch的效率比if语句高。
一、实验描述
1、考核知识点
名称:while循环语句
2、练习目标
掌握while循环语句的语法格式和使用
了解while循环语句的特点
3、需求分析
while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环才会结束。本实验使用while语句实现统计1-10以内奇数的功能。
4、设计思路(实现原理)
1)编写一个类Example06
2)定义一个变量x为1,用while语句循环条件为x<=10
3)在while循环中,使用表达式x%2判断是否为奇数,如果为奇数,则变量count的值加1。
二、实验实现
代码:
package com.java.zjlyyds;
public class test3 {
public static void main(String[] args) {
int x=1;
int count=0;
while(x<=10)
{
if(x%2==1)
count++;
x++;
}
System.out.println(count);
}
}
运行结果截图为图1-7:
图1-7运行结果
三、实验总结
1、while循环语句和条件判断语句有些相似,都是根据条件判断来决定是否执行大括号内的执行语句。区别在于,while语句会反复地进行条件判断,只要条件成立,{}内的执行语句就会执行,直到条件不成立,while循环结束。
2、while循环的执行流程如图1-8所示。
图1-8流程图
一、实验描述
1、考核知识点
名称:for循环语句
2、练习目标
掌握for循环语句的语法格式和使用
了解for循环语句的特点
3、需求分析
for循环语句是最常用的循环语句,一般用在循环次数已知的情况下。本实验使用for循环语句计算1+2+3+4+5…+100表达式的结果
4、设计思路(实现原理)
1)编写一个类Example07
2)在该类中定义一个变量sum来存储每次循环整数相加的和。
3)在for循环语句中定义变量x,循环条件为x<=100
二、实验实现
定义Example07类:
public class Example07 {
public static void main(String[] args) {
int count = 0;
for (int x = 1; x <= 100; x++) {
count += x;
}
System.out.println(count);
}
}
运行结果截图为图1-9:
图1-9编译结果
三、实验总结
1、在for循环中,for关键字后面()中包括了三部分内容:初始化表达式、循环条件和操作表达式,它们之间用“;”分隔,{}中的执行语句为循环体。
2、通过序号来具体分析for循环的执行流程。具体如下:
for(① ; ② ; ③){
④
}
第一步,执行①
第二步,执行②,如果判断结果为true,执行第三步,如果判断结果为false,执行第五步
第三步,执行④
第四步,执行③,然后重复执行第二步
第五步,退出循环
一、实验描述
1、考核知识点
名称:循环嵌套
2、练习目标
掌握循环嵌套的使用和执行顺序
3、需求分析
在编程过程中,经常需要双重循环或多重循环,这就需要循环语句的嵌套。最常见的循环嵌套就是在for循环中嵌套for循环。为了让初学者熟悉for循环嵌套的使用,本实验将演示如何用for循环嵌套打印由 星组成的直角三角形。具体要求如下:
4、设计思路(实现原理)
二、实验实现
定义Example08类:
public class Example08 {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 5; i++) {
for (int j = 5 - i; j >= 1; j–)
System.out.print(“*”);
System.out.println();
}
}
}
运行结果截图为图1-10:
图1-10运行结果
三、实验总结
由于嵌套循环程序比较复杂,下面分步骤进行讲解,具体如下:
第一个三角形:
1、当x=0时,y=0且y<5,循环5次,完成后返回到外层循环进行换行。
2、当x=1时,y=1且y<5,循环4次,完成后返回到外层循环换行。
3、当x=2时,y=2,循环3次,完成后返回到外层循环换行。
4、当x=3时,y=3,循环2次,完成后返回到外层循环换行。
5、当x=4时,y=4,循环1次,完成后返回到外层循环换行。由于x<5所以循环终止,打印结束。
第二个三角形:
1、当x=0时,y=0且y<=0,循环1次,完成后返回到外层循环进行换行。
2、当x=1时,y=0且y<=1,循环2次,完成后返回到外层循环进行换行。
3、当x=2时,y=0且y<=2,循环3次,完成后返回到外层循环进行换行。
4、当x=3时,y=0且y<=3,循环4次,完成后返回到外层循环进行换行。
5、当x=4时,y=0且y<=4,循环5次,完成后返回到外层循环进行换行。由于x<5所以循环终止,打印结束。
一、实验描述
1、考核知识点
名称:方法的定义
2、练习目标
掌握方法的定义
3、需求分析
为了减少重复代码编写的问题,Java中可以将具有相同功能的重复代码提取出来,封装成方法。本实验定义一个方法,该方法能够实现四则运算的功能。
4、设计思路(实现原理)
1)编写一个类Example09
2)定义一个方法siZe,设置三个参数,两个数字为int型,一个符号为char型
3)在方法中,用if选择语句根据传入的符号参数进行不同的运算
4)如果传入的符号不包含在加减乘除四个符号中则输出“符号错误”
5)在main方法中调用方法计算3*0的结果,测试方法是否成功运算出正确结果
二、实验实现
定义Example09类:
import java.util.Scanner;
public class Example09 {
public static int siZe(int a, int b, char c) {
if (c == ‘+’)
return a + b;
else if (c == ‘-’)
return a - b;
else if (c == ‘*’)
return a * b;
else if (c == ‘/’)
return a / b;
else
System.out.println(“符号错误”);
return 0;
}
public static void main(String[] args) {
int a, b;
char c;
while (true) {
Scanner in = new Scanner(System.in);
System.out.println(“请输入2个整数及运算符号”);
a = in.nextInt();
b = in.nextInt();
c = in.next().charAt(0);
int p = siZe(a, b, c);
System.out.println§;
}
}
}
运行结果截图为图1-11:
图1-11运行结果
三、实验总结
1、在Java中,声明一个方法的具体语法格式如下:
修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2,......]){
// 执行语句
return 返回值;
}
2、需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。
一、实验描述
1、考核知识点
名称:方法的重载
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
果
三、实验总结
1、在Java中,声明一个方法的具体语法格式如下:
修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2,......]){
// 执行语句
return 返回值;
}
2、需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。
一、实验描述
1、考核知识点
名称:方法的重载
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-qUwzIimC-1715762118036)]
[外链图片转存中…(img-pPza8bOV-1715762118036)]
[外链图片转存中…(img-BwK9it0i-1715762118036)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!