几个基础JAVA题目

文章提供了几个JAVA编程题目,涉及循环结构、条件判断、数组操作以及面向对象编程中的封装和继承。题目包括打印特定格式的数字序列、统计身高分布、字符分析和员工信息展示。还展示了如何通过子类重写父类方法来实现不同类型的账单计算。
摘要由CSDN通过智能技术生成

几个JAVA基础题目


解题方法有很多种,以下代码仅供参考。


1.编写程序从1循环到150, 并在每行打印一个值,另外在每个3的倍数后面打印出foo,在每个5的倍数后打印biz,在每个7的倍数后打印输出baz,如果能被3、5、7同时整除,则输出foo biz baz

知识点:循环 & break, continue,条件判断语句,算术运算符,常见转义字符

代码

class Application{
    public static void main(String[] args) {
        int max = 150;
        for (int i = 1; i<=max; i++){
            System.out.print(i+"\t");
            if (i%3==0){
                System.out.print("foo\t");
            }
            if (i%5==0){
                System.out.print("biz\t");
            }
            if (i%7==0){
                System.out.print("baz");
            }
            System.out.print("\n");
        }
    }
}
/*
*	\t制表符
*	\n换行符,效果和 System.out.println(); 一致
*/

输出(部分)

84	foo	baz
85	biz	
86	
87	foo	
88	
89	
90	foo	biz	
91	baz
92	
93	foo	
94	
95	biz	
96	foo	
97	
98	baz
99	foo	
100	biz	
101	
102	foo	
103	
104	
105	foo	biz	baz
106	
107	
108	foo	



2.某培训机构即将开学,需要根据部门里学生的身高定制部服,统计出各尺码学生数量(身高对应尺码:150以下S码、150-159M码、160-169L码、170-174XL码、175-179XXL码、180-184XXXL码、185以上XXXXL码),如输入学生身高数据,存储在数组{175,160,182,153,168,159,170,173,149,166},统计出结果:S码1人,M码2人,L码3人,XL码2人,XXL码1人,XXXL码1人,XXXXL码0人。

知识点:数组,循环,逻辑运算符、比较运算符,条件判断语句

代码

class Application {
    public static void main(String[] args) {
    
        int[] heightArr = new int[]{175, 160, 182, 153, 168, 159, 170, 173, 149, 166};
        
        int S = 0, M = 0, L = 0, XL = 0, XXL = 0, XXXL = 0, XXXXL = 0;
        
        for (int i = 0; i < heightArr.length; i++) {
            int h = heightArr[i];
            if (h < 150) {
                S = S + 1;
            } else if (h >= 150 && h < 160) {
                M = M + 1;
            } else if (h >= 160 && h < 170) {
                L = L + 1;
            } else if (h >= 170 && h < 175) {
                XL = XL + 1;
            } else if (h >= 175 && h < 180) {
                XXL = XXL + 1;
            } else if (h >= 180 && h < 185) {
                XXXL = XXXL + 1;
            } else {
                XXXXL = XXXXL + 1;
            }
        }
        System.out.println("S码" + S + "人");
        System.out.println("M码" + M + "人");
        System.out.println("L码" + L + "人");
        System.out.println("XL码" + XL + "人");
        System.out.println("XXL码" + XXL + "人");
        System.out.println("XXXL码" + XXXL + "人");
        System.out.println("XXXXL码" + XXXXL + "人");
    }
}

输出

S码1人
M码2人
L码3人
XL码2人
XXL码1人
XXXL码1人
XXXXL码0人



3.输入一行字符,分别统计出其是英文字母、空格、数字和其它字符的个数。

知识点:Scanner对象,scanner.next()scanner.nextLine()的区别,char型数据的特点和自动类型转换,String类型数据的常用函数,ASCII码相关知识。

class Application {
    public static void main(String[] args) {
        int en = 0;
        int space = 0;
        int num = 0;
        int symbolAndOther = 0;

        System.out.println("请输入一段英文句子,按回车结束输入");
        Scanner sc = new Scanner(System.in);
        String sentence = sc.nextLine();
        sc.close();

        char[] charArr = sentence.toCharArray();
        // string.toCharArray()——该方法把字符串对象拆分为一个个的字符(包括空格)存入一个char型数组,并返回该数组。
        for (char c : charArr) {// foreach循环
        
            if (c >= 97 && c < 122 || c >= 65 && c <= 90) {
                en++;
                continue;
            }
            
            if (c >= 48 && c <= 57) {
                num++;
                continue;
            }
            
            if (c == 32) {
                space++;
                continue;
            }
            
            symbolAndOther++;
        }

        System.out.println("英文字符数:" + en 
                + "\n空格字符数:" + space 
                + "\n数字字符数:" + num 
                + "\n其他字符数:" + symbolAndOther);
    }
}

使用截取字符串的方式完成

class Application {
    public static void main(String[] args) {
        int en = 0;
        int space = 0;
        int num = 0;
        int symbolAndOther = 0;

        System.out.println("请输入一段英文句子,按回车结束输入");
        Scanner sc = new Scanner(System.in);
        String sentence = sc.nextLine();
        sc.close();

        for (int i = 0; i < sentence.length(); i++) {
            char c = sentence.charAt(i);
            if (c >= 97 && c < 122 || c >= 65 && c <= 90) {
                en = en + 1;
            }else if (c >= 48 && c <= 57) {
                num = num + 1;
            }else if (c == 32) {
                space = space + 1;
            }else{
                symbolAndOther = symbolAndOther + 1;
            }
        }

        System.out.println("英文字符数:" + en
                + "\n空格字符数:" + space
                + "\n数字字符数:" + num
                + "\n其他字符数:" + symbolAndOther);
    }
}

结果

请输入一段英文句子,按回车结束输入
1. Sharp tools make good work.
30
英文字符数:22
空格字符数:5
数字字符数:1
其他字符数:2


4.学校里面有很多的员工,现在定义一个员工类(Employee),有如下属性:姓名(name)、性别(sex)、年龄(age)、工资(salary),有一个方法,可以将当前员工的所有信息都打印到控制台,格式如下:姓名:xx — 性别:xx — 年龄:xx — 工资:xx。要求在定义类的时候要有面向对象封装的思想。

知识点:面向对象,封装——private & get & set

public class Employee {

    private String name;
    private char sex;
    private int age;
    private double salary;

    public Employee(String name, char sex, int age, double salary) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.salary = salary;
    }

    public void showInfo() {
        System.out.println("姓名:" + this.getName() +
                "\t--- 性别:" + this.getSex() +
                " --- 年龄:" + this.getAge() +
                " --- 工资:" + this.getSalary());
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public static void main(String[] args) {
        Employee[] employees = new Employee[3];
        employees[0] = new Employee("张三", '男', 22, 4000);
        employees[1] = new Employee("李四", '男', 26, 10000);
        employees[2] = new Employee("王五", '男', 30, 15000);
        for (int i = 0; i < employees.length; i++) {
			employees[i].showInfo();
        }
    }
}

输出

姓名:张三 --- 性别:男 --- 年龄:22 --- 工资:4000.0
姓名:李四 --- 性别:男 --- 年龄:26 --- 工资:10000.0
姓名:王五 --- 性别:男 --- 年龄:30 --- 工资:15000.0


5.当前有账单类(Bill),有计算账单的方法calculate。账单类有两个子类分别是天然气账单(GasBill)有一个属性天然气用量(cubicMeters),天然气账单的计算方法calculate为天然气用量*5;电话号码账单(PhoneBill),有2个属性,分钟数(minites)、流量(stream)GB,电话费账单的计算方法calculate为分钟数*0.2加上流量*10

(1)定义出3个类Bill、GasBill、PhoneBill;

(2)定义出GasBill、与PhoneBill的全参构造函数用于初始化各自的账单信息;

(3)写一个测试类BillDemo 测试如下代码:创建 GasBill、PhoneBill的对象,验证能不能赋值给Bill。如果可以,观察调用Bill 的calculate 方法时该方法的表现行为。

知识点:继承,构造函数的重载,方法的重写,向上转型

public class Bill {
    public double calculate() {
        System.out.println("父类Bill的计算方法");
        return 0d;
    }
}

class GasBill extends Bill {

    private double cubicMeters;

    public GasBill(double cubicMeters) {
        this.cubicMeters = cubicMeters;
    }

    @Override
    public double calculate() {
        System.out.println("子类GasBill的计算方法");
        return this.cubicMeters * 5;
    }
}

class PhoneBill extends Bill {

    private int minites;
    private double stream;

    public PhoneBill(int minites, double stream) {
        this.minites = minites;
        this.stream = stream;
    }

    @Override
    public double calculate() {
        System.out.println("子类PhoneBill的计算方法");
        return this.minites * 0.2 + this.stream * 10;
    }
}

class BillDEmo {
    public static void main(String[] args) {
        Bill b1 = new GasBill(66.6);
        Bill b2 = new PhoneBill(200, 80.8);
        b1.calculate();
        b2.calculate();
    }
}

输出

子类GasBill的计算方法
子类PhoneBill的计算方法

从结果我们不难看出,即使父类的引用指向的是子类的实例,我们调用的实例方法依然是子类的方法







本文发布的代码仅供学习,若引用的题目对您(们)造成了侵权请及时联系我删除,并致以我诚挚的歉意!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值