java实验一正式报告

Posted _DiMinisH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实验一正式报告相关的知识,希望对你有一定的参考价值。

实验一 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循环等其他循环语句的使用,可以理解面向对象编程,会使用面向对象编程的方法解决问题,能说出静态方法和普通方法的区别,熟悉访问限定符的修饰作用,本次实验学到了很多

以上是关于java实验一正式报告的主要内容,如果未能解决你的问题,请参考以下文章

java实验四正式报告

java实验五正式报告

编译原理 实验一 java语言实现对C语言词法分析

编译原理 实验一 java语言实现对C语言词法分析

20175209 实验二《Java面向对象程序设计》实验报告

20155208 《Java程序设计》实验一(Java开发环境的熟悉)实验报告