Java课程实验报告二:Java语言语法基础

实验日期:2022-03-16

目录

实验日期:2022-03-16

一、实验目的

二、实验内容

三、命名和注释要求

四、实验环境

1. 使用的操作系统及版本

2. 使用的开发工具及版本

五、实验步骤及说明

1.Unicode表转换

 2.水仙花数

(1)使用位数分离法

(2)使用循环嵌套法

3.石头剪刀布游戏

六、实验小结及思考

七、自评分和自评语


一、实验目的

熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先级,熟悉使用Java的选择语句、循环语句。

二、实验内容

1、编写Java程序求“程序”这2个汉字分别在Unicode表中的顺序位置。提示:观察一个字符在Unicode表中的顺序位置,需使用int类型转换,如(int)a。不可以使用short转换。要得到一个0-65535之间的数所代表的Unicode表中相应位置上的字符,需使用char型转换。

2、编写Java程序输出 “水仙花” 数 (它的个、十、百位数字的立方的和等于该数本身,如:153=1^3+5^3+3^3)

3、编写一个剪刀石头布游戏的Java程序,程序启动后随机生成1-3的随机数,分别代表石头、剪刀、布,玩家通过键盘输入石头、剪刀、布与电脑进行5轮游戏,赢的次数多的一方为赢家。需要考虑平局情况。

三、命名和注释要求

命名要求:在IDEA中创建“HelloJava”项目,模块名为“lab2”,包名为“com.你的姓名拼音缩写”(比如张三的包名:com.zhs),3个小题的类名分别为Exercise1、Exercise2、Exercise3。

注释要求:每个文件开始位置、关键代码需要规范填写注释。示例如下:

四、实验环境

1. 使用的操作系统及版本

macOS 12.2.1

2. 使用的开发工具及版本

JDK版本:17.0.2        IDE版本:2021.3.2

五、实验步骤及说明

1.Unicode表转换

此处使用char数据类型,最初使用双引号导致程序无法运行,后面才想起使用单引号引用字符。双引号引用的是字符串(String类型),这点与C语言类似。

项目结构:

Java课程实验报告二:Java语言语法基础_第1张图片

程序源代码: 

Java课程实验报告二:Java语言语法基础_第2张图片

运行结果

 Java课程实验报告二:Java语言语法基础_第3张图片

 2.水仙花数

(1)使用位数分离法

程序猿代码

/*
File Name:Exercise.java
Package Name:com.zzh
Author:张志豪
Description:求水仙花数
 */
package com.zzh;
public class Exercise2 {
        public static void main(String args[]){
            int a,b,c;
            System.out.println("水仙花数如下:");
            for(int i=100;i<1000;i++){
                a=i%10;
                b=i/10%10;
                c=i/100;
                if(a*a*a+b*b*b+c*c*c==i) {
                    System.out.println(i);
                }
            }
        }
    }

(2)使用循环嵌套法

ublic class Exercise2 {
    public static void main(String args[]) {
        int a, b;
        System.out.println("水仙花数如下:");
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                for (int k = 0; k < 10; k++) {
                    a=i + j * 10 + k * 100;
                    b= i*i*i+j*j*j+k*k*k;
                    if (a == b&&a!=0&&a!=1)//排除非法结果,如0
                        System.out.println(a);
                }
            }
        }
    }

(3)程序运行结果

Java课程实验报告二:Java语言语法基础_第4张图片

3.石头剪刀布游戏

(1)由于程序需要输入石头、剪刀、布,于是采用String类型变量。查阅教材后,

对于字符串输入,发现可以采用next()或nextLine()进行输入;

对于字符串的比较,可采用a.equals(b)进行内容的比较。

(2)程序源代码

package com.zzh;
//导包
import java.util.*;
public class Exercise3 {
    public static void main(String args[]) {
        //创建对象
        Random sc = new Random();
        Scanner ss = new Scanner(System.in);
        //此处规定:1--✊  2--✂️  3--布
        //定义变量magic,获得电脑产生的1~3的随机数
        int magic;
        //定义两个计数变量:count1表示电脑赢的次数,count2表示玩家赢的次数
        int count1 = 0, count2 = 0;
        //定义两个String类型变量,guess为输入的字符串。
        String guess;
        String model;
        for (int i = 1; i <= 5; i++) {
            magic = sc.nextInt(3) + 1;//产生1~3的随机数,分别代表石头,剪刀,布
            //此处model将电脑产生的1~3数字对应转换为"石头、剪刀或布"
            if (magic == 1) model = "石头";
            else if (magic == 2) model = "剪刀";
            else model = "布";
            System.out.println("请输入您的猜拳结果:");
            guess = ss.next();
            System.out.println("第" + i + "轮游戏电脑猜拳结果为:" + model);
            //以下if-else语句中的else后续语句,可巧妙的对非法数据输入进行提示
             switch (magic) {
                case 1:
                    if (guess.equals("剪刀")) {
                        count1++;
                        System.out.println("此轮电脑获胜!");
                    } else if (guess.equals("石头"))
                        System.out.println("此轮为平局");
                    else if (guess.equals("布")) {
                        count2++;
                        System.out.println("此轮玩家获胜!");
                    }
                    else {
                        System.out.println("您的输出有误,请重新输入石头或剪刀或布");
                        //此处i--,在程序出现非法输入时,仍然能够正常进行五次游戏,下面几次作用一样
                        i--;
                    }
                    break;
                case 2:
                    if (guess.equals("布")) {
                        count1++;
                        System.out.println("此轮电脑获胜!");
                    } else if (guess.equals("剪刀"))
                        System.out.println("此轮为平局");
                    else if (guess.equals("石头")) {
                        count2++;
                        System.out.println("此轮玩家获胜!");
                    } else {
                        System.out.println("您的输出有误,请重新输入石头或剪刀或布");
                        i--;
                    }
                    break;
                case 3:
                    if (guess.equals("石头")){
                        count1++;
                        System.out.println("此轮电脑获胜!");
                    }
                    else if (guess.equals( "布"))
                        System.out.println("此轮为平局");
                    else if (guess.equals("剪刀")){
                        count2++;
                        System.out.println("此轮玩家获胜!");
                    }
                    else {
                        System.out.println("您的输出有误,请重新输入石头或剪刀或布");
                        i--;
                    }
                    break;
            }
        }
        System.out.println("**********************");
        if (count1 > count2)
            System.out.println("最终结果:电脑为赢家!!!");
        else if (count1 < count2)
            System.out.println("最终结果:玩家为赢家!!!");
        else
            System.out.println("最终结果:平局");
    }
}

 (3)程序运行结果:

(第二次输入了aaaaaaa,程序提示输入错误,但由于i--,程序仍然能够正常进行五次游戏)

 Java课程实验报告二:Java语言语法基础_第5张图片

六、实验小结及思考

体会收获:通过第一题,我进一步了解了Unicode表,知道了编码与字符的转换方法。在第三题编写过程中,学习了String这样一种数据类型,并深入了解它的不一样的输入格式,如next()、nextLine()。在后面进行剪刀石头布的字符串比较过程中,由于未找到与C语言中类型的比较函数,采用“==”进行比较,导致程序运行结果有时会出现错误。查阅资料后发现 ,“==”比较的是字符串的地址,而比较内容应该使用equals关键字。其次,采用else语句来处理不合法字符的输入,间接的提高了程序的健壮性。

在导包的过程中偶然发现只需导入java.util.*即可查阅资料后了解到Random类和Scanner类均属于java.util.*包里面的内容因此导入java.util.*可以达到相同的效果同时还能使代码更简洁

七、自评分和自评语

1.自评分:100

2.自评语:第一题中按要求完成了字符与编码之间的转换 ,得到了字符的位置关系。然后采用了两种算法来得到水仙花数。第三题通过查阅资料采用String,和equals完成了石头剪刀布游戏的程序代码编写。

你可能感兴趣的:(实验报告,Java,java,开发语言,软件工程,算法,eclipse)