java实验一正式报告

书读的越多而不加思考,你就会觉得你知道得很多;而当你读书而思考得越多的时候,你就会越清楚地看到,你知道得很少。

导读:本篇文章讲解 java实验一正式报告,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文



实验一 java基础编程(实验报告)


姓名:
XXX         
班级:
XXX         
学号:
XXX

一、实验目的

  在集成开发环境下,依照Java语言的基本语法编译和执行简单Java的程序,通过本次实践环节理解java程序的运行机制,掌握 java 语言的基本结构和程序设计方法

二、实验目标

  学习使用java变量的声明和使用,掌握for循环等其他循环语句的使用,理解面向对象编程,会使用面向对象编程的方法解决问题,了解静态方法和普通方法的区别,熟悉访问限定符的修饰作用

三、实验内容

3.1 实验环境

IntelliJ IDEA Ultimate Edition 2021.2 x64. + openjdk-17.0.1.

3.2 具体实验内容

问题一
  • 小明带了20元来商店买一本书,剩余的钱还可以买哪种商品?可以购买几件?剩余多少钱?

问题分析:小明在买完数后,剩余的钱是10元,接下来通过枚举的方式,计算出他可以买的剩余物品的数量,使用三层for循环的方式。

选择模型:枚举

public class FirstQuestion {
    public static void main (String[] args) {
        int money = 20;
        money = money - 10;
        System.out.println("After purchasing book: " + money);
        for (int bookCount = 0; bookCount * 10 <= money; bookCount++)
            for (int milkCount = 0; milkCount * 5 <= money; milkCount++)
                for (int eraserCount = 0; eraserCount <= money; eraserCount++)
                    for (int rulerCount = 0; rulerCount * 2 <= money; rulerCount++) {
                        int restMoney = money - bookCount * 10 - milkCount * 5 - eraserCount - rulerCount * 2;
                        if (restMoney >= 0)
                            System.out.printf("他可以买%d本书, %d个牛奶, %d个橡皮擦, %d个尺子 剩余%d元\n", bookCount, milkCount, eraserCount, rulerCount, restMoney);
                    }
    }
}

  • 实验结果

他可以买0本书, 0个牛奶, 0个橡皮擦, 0个尺子 剩余10元
他可以买0本书, 0个牛奶, 0个橡皮擦, 1个尺子 剩余8元
他可以买0本书, 0个牛奶, 0个橡皮擦, 2个尺子 剩余6元
他可以买0本书, 0个牛奶, 0个橡皮擦, 3个尺子 剩余4元
他可以买0本书, 0个牛奶, 0个橡皮擦, 4个尺子 剩余2元
他可以买0本书, 0个牛奶, 0个橡皮擦, 5个尺子 剩余0元
他可以买0本书, 0个牛奶, 1个橡皮擦, 0个尺子 剩余9元
他可以买0本书, 0个牛奶, 1个橡皮擦, 1个尺子 剩余7元
他可以买0本书, 0个牛奶, 1个橡皮擦, 2个尺子 剩余5元
他可以买0本书, 0个牛奶, 1个橡皮擦, 3个尺子 剩余3元
他可以买0本书, 0个牛奶, 1个橡皮擦, 4个尺子 剩余1元
他可以买0本书, 0个牛奶, 2个橡皮擦, 0个尺子 剩余8元
他可以买0本书, 0个牛奶, 2个橡皮擦, 1个尺子 剩余6元
他可以买0本书, 0个牛奶, 2个橡皮擦, 2个尺子 剩余4元
他可以买0本书, 0个牛奶, 2个橡皮擦, 3个尺子 剩余2元
他可以买0本书, 0个牛奶, 2个橡皮擦, 4个尺子 剩余0元
他可以买0本书, 0个牛奶, 3个橡皮擦, 0个尺子 剩余7元
他可以买0本书, 0个牛奶, 3个橡皮擦, 1个尺子 剩余5元
他可以买0本书, 0个牛奶, 3个橡皮擦, 2个尺子 剩余3元
他可以买0本书, 0个牛奶, 3个橡皮擦, 3个尺子 剩余1元
他可以买0本书, 0个牛奶, 4个橡皮擦, 0个尺子 剩余6元
他可以买0本书, 0个牛奶, 4个橡皮擦, 1个尺子 剩余4元
他可以买0本书, 0个牛奶, 4个橡皮擦, 2个尺子 剩余2元
他可以买0本书, 0个牛奶, 4个橡皮擦, 3个尺子 剩余0元
他可以买0本书, 0个牛奶, 5个橡皮擦, 0个尺子 剩余5元
他可以买0本书, 0个牛奶, 5个橡皮擦, 1个尺子 剩余3元
他可以买0本书, 0个牛奶, 5个橡皮擦, 2个尺子 剩余1元
他可以买0本书, 0个牛奶, 6个橡皮擦, 0个尺子 剩余4元
他可以买0本书, 0个牛奶, 6个橡皮擦, 1个尺子 剩余2元
他可以买0本书, 0个牛奶, 6个橡皮擦, 2个尺子 剩余0元
他可以买0本书, 0个牛奶, 7个橡皮擦, 0个尺子 剩余3元
他可以买0本书, 0个牛奶, 7个橡皮擦, 1个尺子 剩余1元
他可以买0本书, 0个牛奶, 8个橡皮擦, 0个尺子 剩余2元
他可以买0本书, 0个牛奶, 8个橡皮擦, 1个尺子 剩余0元
他可以买0本书, 0个牛奶, 9个橡皮擦, 0个尺子 剩余1元
他可以买0本书, 0个牛奶, 10个橡皮擦, 0个尺子 剩余0元
他可以买0本书, 1个牛奶, 0个橡皮擦, 0个尺子 剩余5元
他可以买0本书, 1个牛奶, 0个橡皮擦, 1个尺子 剩余3元
他可以买0本书, 1个牛奶, 0个橡皮擦, 2个尺子 剩余1元
他可以买0本书, 1个牛奶, 1个橡皮擦, 0个尺子 剩余4元
他可以买0本书, 1个牛奶, 1个橡皮擦, 1个尺子 剩余2元
他可以买0本书, 1个牛奶, 1个橡皮擦, 2个尺子 剩余0元
他可以买0本书, 1个牛奶, 2个橡皮擦, 0个尺子 剩余3元
他可以买0本书, 1个牛奶, 2个橡皮擦, 1个尺子 剩余1元
他可以买0本书, 1个牛奶, 3个橡皮擦, 0个尺子 剩余2元
他可以买0本书, 1个牛奶, 3个橡皮擦, 1个尺子 剩余0元
他可以买0本书, 1个牛奶, 4个橡皮擦, 0个尺子 剩余1元
他可以买0本书, 1个牛奶, 5个橡皮擦, 0个尺子 剩余0元
他可以买0本书, 2个牛奶, 0个橡皮擦, 0个尺子 剩余0元
他可以买1本书, 0个牛奶, 0个橡皮擦, 0个尺子 剩余0元

  • 错误分析

要注意这里不能有负的钱数
需要注意i f 的条件

问题二
  • 利用switch语句将学生成绩分为优秀(90-100分)良好(80-89)中(70-79)及格(60-69)不及格(<60)
import java.util.Scanner;

public class SecondQuestion {
    public static void main (String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个有效成绩");
        try {
            int score = scanner.nextInt();
            switch (score / 10) {
                case 9,10 -> System.out.println("优秀");
                case 8 -> System.out.println("良好");
                case 7 -> System.out.println("中等");
                case 6 -> System.out.println("及格");
                default -> System.out.println("不及格");
            }
        } catch (Exception e) {
            System.out.println("输入错误");
        }
    }
}

  • 实验结果

请输入一个有效成绩
2
不及格

请输入一个有效成绩
;;;
输入错误

  • 错误分析

break忘记写,导致输出很多
分数除以10写成 模10
输入不为数字

问题三
  • 定义一个计算器类,该类中包含加、减、乘、除4个静态方法,并定义一个测试类,调用对应的方法进行四则运算。
public class ThirdQuestion {
    public static void main (String[] args) {
        Test.test();
    }
}

class Calculator {
    public static double add (double o1, double o2) {
        return o1 + o2;
    }

    public static double sub (double o1, double o2) {
        return o1 - o2;
    }

    public static double multi (double o1, double o2) {
        return o1 * o2;
    }

    public static double div (double o1, double o2) throws ArithmeticException {
        return o1 / o2;
    }
}

class Test {
    public static void test () {
        double num1 = 1;
        double num2 = 0;
        System.out.printf("%f + %f = %f\n", num1, num2, Calculator.add(num1, num2));
        System.out.printf("%f - %f = %f\n", num1, num2, Calculator.sub(num1, num2));
        System.out.printf("%f × %f = %f\n", num1, num2, Calculator.multi(num1, num2));
        try {
            System.out.printf("%f ÷ %f = %f\n", num1, num2, Calculator.div(num1, num2));
        } catch (ArithmeticException e) {
            System.out.println("计算错误,除数为0");
        }

    }
}

  • 实验结果

1.000000 + 0.000000 = 1.000000
1.000000 – 0.000000 = 1.000000
1.000000 × 0.000000 = 0.000000
1.000000 ÷ 0.000000 = Infinity

  • 错误分析

除数为0,需要处理异常

问题四
  • 打印100-999以内的水仙花数(水仙花数即每个位数上数字的3次幂之和等于数字它本身,如153=1*1*1+5*5*5+3*3*3)。
public class ForthQuestion {
    public static void main (String[] args) {
        for (int i = 100; i <= 999; i++) {
            int[] nums = getNumbers(i);
            if ((Math.pow(nums[0], 3) + Math.pow(nums[1], 3) + Math.pow(nums[2], 3)) == i)
                System.out.println(i);
        }
    }

    private static int[] getNumbers (int num) {
        int[] nums = new int[3];
        nums[0] = num / 100;
        nums[1] = (num - nums[0] * 100) / 10;
        nums[2] = num % 10;
        return nums;
    }
}

  • 实验结果

153
370
371
407

  • 错误分析

分解每个数位的时候,算法需要弄清楚

问题五
  • 在类中定义一个静态方法printStar打印一颗树,该方法没有返回值,需要一个整形参数number定义树的高度,在主方法中调用这个方法,number值为5和10时得到下图的结果。
public class FifthQuestion {
    public static void main (String[] args) {
        printStar(6);
    }

    private static void printStar (int n) {
        for (int line = 1; line <= n; line++) {
            for (int i = 0; i < n - line; i++) {
                System.out.print(" ");
            }
            for (int i = 0; i < 2 * line - 1; i++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

  • 实验结果
     *
    ***
   *****
  *******
 *********
***********
  • 错误分析

每一行的输出结果,跟行数有关系

四、实验总结

  学习和使用了java变量的声明,掌握了for循环等其他循环语句的使用,可以理解面向对象编程,会使用面向对象编程的方法解决问题,能说出静态方法和普通方法的区别,熟悉访问限定符的修饰作用,本次实验学到了很多

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122843.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!