几个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的计算方法
从结果我们不难看出,即使父类的引用指向的是子类的实例,我们调用的实例方法依然是子类的方法
本文发布的代码仅供学习,若引用的题目对您(们)造成了侵权请及时联系我删除,并致以我诚挚的歉意!