Java编程基础-实验题

编写一个随机点名的程序,使其能够在全班同学中随机点中某一名同学的名字。随机点名器具备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 变量的强制类型转换


一、实验描述

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-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-4 if条件语句


一、实验描述

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-5 switch条件语句


一、实验描述

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-6 while循环语句


一、实验描述

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-7 for循环语句


一、实验描述

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-8 for循环嵌套


一、实验描述

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-9 方法的定义


一、实验描述

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-10 方法的重载


一、实验描述

1、考核知识点

名称:方法的重载

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
在这里插入图片描述

三、实验总结

1、在Java中,声明一个方法的具体语法格式如下:

修饰符 返回值类型 方法名([参数类型 参数名1,参数类型 参数名2,......]){

// 执行语句

return 返回值;

}

2、需要特别注意的是,方法中的“参数类型 参数名1,参数类型 参数名2”被称作参数列表,它用于描述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值必须为方法声明的返回值类型,如果方法中没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。

实验1-10 方法的重载


一、实验描述

1、考核知识点

名称:方法的重载

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-qUwzIimC-1715762118036)]

[外链图片转存中…(img-pPza8bOV-1715762118036)]

[外链图片转存中…(img-BwK9it0i-1715762118036)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值