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

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java程序设计实验报告 实验实验题目:从键盘上读入10个字符串存入数组a中,然后输出这10个字符串中最大字符串 和最小字符串。 实验代码: public class StrPro { public static void main(String[] args) { String str[] = new String[5]; System.out.println("Please input 10 strings:"); int i; String max,min; for(i=0;i<5;i++){ System.out.print("Please input the "+(i+1)+" string:"); Scanner sc = new Scanner(System.in); str[i] = sc.nextLine(); } max = str[0]; min = str[0]; for(i=0;i<str.length;i++){ if(max.compareTo(str[i])<0){ max = str[i]; } if(min.compareTo(str[i])>0){ min = str[i]; } } System.out.println("最大的字符串为:"+max); System.out.println("最小的字符串为:"+min); } } 实验结果: 实验心得体会: 掌握了java的基本语法,数组的定义与使用,做这个实验要了解字符串数组的定义 及字符串数组的输入方法,还有比较字符串数组的大小的调用方法等。 实验实验题目: 自定义一个矩形类(Rectangle),包含的属性有:长(length),宽(width), 包含的方法有:关于属性的setter和getter方法,即setLength,getLength,setWidth ,getWidth,计算矩形面积的方法(getArea)。 定义矩形类的子类正方形类(Square),包含的属性和方法自行确定,要求完成的 功能是,能计算正方形的面积。 定义一个测试类(Test),测试矩形类和正方形类能否正确的计算面积。 以上类中属性和方法的访问权限自行确定,方法和构造方法若有参数,也自行确定 。 实验代码: public class Rectangle { int Length; int Width; public int getLength() { return Length; } public void setLength(int length) { Length = length; } public int getWidth() { return Width; } public void setWidth(int width) { Width = width; } int getArea(){ return Length * Width; } } public class Square extends Rectangle{ Square(int border) { super.setLength(border); super.setWidth(border); } } public class Test { public void test(){ System.out.println("请选择计算的形状的序号:1.矩形 2.正方形"); Scanner sc = new Scanner(System.in); int i = sc.nextInt(); int len,wid; if(i==1){ System.out.print("请输入矩形的长:"); Scanner s = new Scanner(System.in); len = s.nextInt(); System.out.print("请输入矩形的宽:"); wid = s.nextInt(); Rectangle re = new Rectangle(); re.setLength(len); re.setWidth(wid); System.out.println("矩形面积为:"+re.getArea()); } else if(i==2){ System.out.print("请输入正方形的边长:"); Scanner s = new Scanner(System.in); len = s.nextInt(); Square sq = new Square(len); System.out.println("正方形面积为:"+sq.getArea()); } else{ System.out.println("输入错误!"); } } public static v

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值