目录
1.设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象。
2.编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。
4.编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。
5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离。
1.设计一个包含多个构造方法的类,并分别用这些构造方法实例化对象。
class Like {
public String name;
public String age;
public String hobby;
public Like() {
}
public Like(String name, String age, String hobby) {
this.name = name;
this.age = age;
this.hobby = hobby;
}
// 说话
publicvoid say() {
System.out.println(name + "说:沸羊羊你个臭**");
}
publicvoid saying() {
System.out.println(name + "说:美羊羊你 TMD 真双标");
}
publicvoid show() {
System.out.println("我可是" + name + age + hobby);
}
}
publicclass NO1 {
publicstaticvoid main(String[] args) {
Like landawang = new Like("懒大王,", "你什么身份,我什么地位", ",你在狗叫什么!");
Like laozi = new Like("羊村村霸,", "村长都得给我递烟!", "少TM在那逼逼赖赖!");
landawang.show();
laozi.show();
landawang.say();
laozi.saying();
}
}
编辑
2.编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。
publicclass NO2 {
publicstaticvoid main(String[] args) {
Calculate1 c1 = new Calculate1();
Calculate2 c2 = new Calculate2();
System.out.println("c1的加法:" + c1.plus(3, 2));
System.out.println("c1的减法:" + c1.subtraction(5, 3));
System.out.println("c2的乘法:" + c2.multiply(4, 4));
System.out.println("c2的除法:" + c2.remove(6, 3));
}
}
class Calculate1 {
publicdouble plus(doublex, doubley) {
returnx + y;
}
publicdouble subtraction(doublex, doubley) {
returnx - y;
}
}
class Calculate2 extends Calculate1 {
publicdouble multiply(doublex, doubley) {
returnx * y;
}
publicdouble remove(doublex, doubley) {
returnx / y;
}
}
编辑
3.建立三个类:居民、成人、官员。居民包含身份证号、姓名、出生日期,而成人继承自居民,多包含学历、职业两项数据;官员则继承自成人,多包含党派、职务两项数据。要求每个类的字段都以属性的方式对外提供数据输入输出的功能。
class Person {
public String no;
public String name;
public String birth;
public Person(String no, String name, String birth) {
LO(no);
LOV(name);
LOVE(birth);
}
publicvoid LO(String no) {
System.out.println("身份证号:" + no);
this.no = no;
}
publicvoid LOV(String name) {
System.out.println("姓名:" + name);
this.name = name;
}
publicvoid LOVE(String birth) {
System.out.println("出生日期:" + birth);
this.birth = birth;
}
}
class Adult extends Person {
public String study;
public String job;
public Adult(String no, String name, String birth, String study, String job) {
super(no, name, birth);
ST(study);
JO(job);
}
publicvoid ST(String study) {
System.out.println("学历:" + study);
this.study = study;
}
publicvoid JO(String job) {
System.out.println("职业:" + job);
this.job = job;
}
}
class Official extends Adult {
public String political;
public String post;
public Official(String no, String name, String birth, String study, String job, String political, String post) {
super(no, name, birth, study, job);
Pol(political);
Pos(post);
}
publicvoid Pol(String Political) {
System.out.println("党派:" + Political);
this.political = Political;
}
publicvoid Pos(String post) {
System.out.println("职务:" + post);
this.post = post;
}
}
publicclass NO3 {
publicstaticvoid main(String[] args) {
Person m = new Person("4************0", "美羊羊", "2000-02-02");
System.out.println();
Adult f = new Adult("4************1", "沸羊羊", "2001-03-08", "小学羊", "添购");
System.out.println();
Official l = new Official("4************2", "懒大王", "2002-08-08", "研究羊", "羊", "羊党", "羊村村霸");
}
}
编辑
4.编写一个类,其中包含一个排序的方法sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。
import java.util.Arrays;
publicclass NO4 {
publicstaticvoid main(String[] args) {
int[] obj = { 3, 6, 1, 10, 8 };
obj = sort(obj);
// 随便建一个字符的数组
String[] objs = { "b", "a", "c", "h", "d" };
objs = sort(objs);
// 打印
System.out.println("字符输出\t");
for (inti = 0; i < objs.length; i++) {
System.out.print(objs[i] + " ");
}
System.out.println("\t");
System.out.println("整数输出\t");
for (inti = 0; i < obj.length; i++) {
System.out.print(obj[i] + " ");
}
}
// 用Arrays.sort()方法排序,默认从小到大
publicstaticint[] sort(int[] nums) {
Arrays.sort(nums);
returnnums;
}
// 字符串排序,用冒泡排序,通过compareTo(str)方法进行比较,该方法是根据字典表的顺序进行比较,如果参数大于本值,则返回-1,如果相等返回0,大于返回1
publicstatic String[] sort(String[] strs) {
for (inti = 0; i < strs.length; i++) {
for (intj = 0; j < strs.length - i - 1; j++) {
if (strs[j].compareTo(strs[j + 1]) < 1) {
String temp = strs[j];
strs[j] = strs[j + 1];
strs[j + 1] = temp;
}
}
}
returnstrs;
}
}
编辑
5.设计一个立方体类Box,它能计算并输出立方体的体积和表面积。
import java.util.Scanner;
class Box {
privateintlength;
privateintwidth;
privateintheigth;
void setBox(intl, intw, inth) {
length = l;
width = w;
heigth = h;
}
int volume() {
System.out.println("立方体的体积是;" + length * width * heigth);
return 0;
}
int superficial() {
System.out.println("立方体的表面积是;" + 2 * (length * width + width * heigth + length * heigth));
return 0;
}
}
publicclass NO5 {
publicstaticvoid main(String[] args) {
Box b = new Box();
System.out.println("下面将输入你所要计算的立方体体积和表面积");
System.out.println("下面将输入你所要计算的立方体长");
Scanner sc = new Scanner(System.in);
inti = sc.nextInt();
System.out.println("下面将输入你所要计算的立方体宽");
intj = sc.nextInt();
System.out.println("下面将输入你所要计算的立方体高");
intk = sc.nextInt();
b.setBox(i, j, k);
b.volume();
b.superficial();
}
}
编辑
6.编写一个程序,设计一个点类Point,实例化两个点之后,能调用其方法求两个点之间的距离。
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
/*
* 计算两点之间的距离 公式:根号下(x1-x2)^2+(y1-y2)^2
*/
public static void distance(Point p1, Point p2) {
double sum = Math.sqrt(Math.pow(p1.x - p2.x, 2) + Math.pow(p1.y - p2.y, 2));
System.out.println("两点间的距离为\t");
System.out.println(sum);
}
}
public class NO6 {
public static void main(String[] args) {
Point.distance(new Point(0, 0), new Point(3, 4));
//原点到(3,4)的距离
}
}
编辑
7、 写一个学生类,包括属性: 学号,班号,姓名,年龄,性别;要求用无参构造,方法获得:学号,班号,姓名,年龄(只能小于100岁,大于1,否则重新输入) ,性别(只能男或者女,否则重新输入),最后在主方法输出你对一个学生对象赋值的信息。
import java.util.Scanner;
publicclass NO7 {
publicstaticclass Student { // 以public class开头的内部类为动态的,而主程序以public static class开头
// 在java中,类中的静态方法不能直接调用动态方法,只有将某个内部类修饰为静态类,能够在静态类中调用该类的成员变量与成员方法。即此处应改为public
// static class Student
intnum;// 学号
intclassnum;// 班号
String name;// 姓名
intage;// 年龄
String sex;// 性别
public Student()// 空参构造
{
super();
}
public Student(intnum, intclassnum, String name, intage, String sex) // 有参构造
{
this.num = num;
this.classnum = classnum;
this.name = name;
this.age = age;
this.sex = sex;
}
// 各属性的getter和setter方法
publicint getNum() {
returnnum;
}
publicvoid setNum(intnum) {
this.num = num;
}
publicint getClassnum() {
returnclassnum;
}
publicvoid setClassnum(intclassnum) {
this.classnum = classnum;
}
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
publicint getAge() {
returnage;
}
publicvoid setAge(intage) {
this.age = age;
}
public String getSex() {
returnsex;
}
publicvoid setSex(String sex) {
this.sex = sex;
}
// 数组中顺序显示所有学生信息
void Print(Student[] array)// Student[] array为对象数组,其在使用时必须逐一实例化
{
for (inti = 0; i < array.length; i++) {
System.out.println("学号:" + array[i].num + " 班号:" + array[i].classnum + " 姓名:" + array[i].name
+ " 年龄:" + array[i].age + " 性别:" + array[i].sex);
}
}
// 通过学生学号查找学生信息
void Find(intnum, Student[] array)// 参数为num。和学生类数组array
{
for (inti = 0; i < array.length; i++) {
if (num == array[i].getNum()) {
System.out.println("学号:" + array[i].num + " 班号:" + array[i].classnum + " 姓名:" + array[i].name
+ " 年龄:" + array[i].age + " 性别:" + array[i].sex);
}
}
}
publicstaticvoid main(String[] args) {
// 法一:手动输入学生信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生人数:");
intx = sc.nextInt();
Student[] array = new Student[x];
for (inti = 0; i < array.length; i++) {
array[i] = new Student();// 若在编写一个java程序时没有添加无参构造方法,编译器会自动添加无参构造方法;
// 但是若编写时添加了有参构造方法而未添加无参构造方法,则编译器只认有参构造方法而不会默认添加无参构造方法,需要注意的是如果需要使用无参构造方法,一定要在类中里面添加
System.out.println("请输入第" + (i + 1) + "个学生的学号");
intnum = sc.nextInt();// 输入学号
array[i].setNum(num);
System.out.println("请输入第" + (i + 1) + "个学生的班号");
intclassnum = sc.nextInt();// 输入班号
array[i].setClassnum(classnum);
System.out.println("请输入第" + (i + 1) + "个学生的姓名");
String name = sc.next();// 输入姓名
array[i].setName(name);
System.out.println("请输入第" + (i + 1) + "个学生的年龄");
intage = sc.nextInt();// 输入年龄
if (age < 100 && age > 1)
array[i].setAge(age);
else {
System.out.println("请重新输入");
continue;
}
System.out.println("请输入第" + (i + 1) + "个学生的性别");
String sex = sc.next();// 输入性别
if (sex != " 男" || sex != " 女")
array[i].setSex(sex);
else {
System.out.println("请重新输入");
continue;
}
}
System.out.println("所有学生初始信息如下:");
array[0].Print(array);
System.out.println("----------------------------------");
System.out.println("学号为201801学生信息如下:");
array[0].Find(201801, array);
System.out.println("----------------------------------");
}
}
}
编辑
8、设计一个BankAccount类,实现银行某账号的资金往来账目管理,包括建账号、存入、取出等。BankAccount类包括,账号(BankAccountId)、开户日期Date(日期),Money(金额),Rest(余额)。另有一个构造方法和三个成员方法Bankin()(处理存入账),Bankout()处理取出账)和和一个负责生成账号的自动增长的方法。
import java.util.Scanner;
publicclass denglu2 {
publicstaticvoid main(String[] args){
Scanner sc = new Scanner(System.in);
geren1[] user = new geren1[10];
//System.out.println(user[1]);
BankAccount(sc,user);
}
publicstaticvoid BankAccount(Scanner sc,geren1[] user){
while (true)
{
System.out.println("===银行系统===");
System.out.println();
System.out.println("1,登录\t\t2,注册\t\t3,退出");
intxuanze = sc.nextInt();
if (xuanze == 1)
{
//print(user);
denglu1(sc,user);
}elseif(xuanze == 2){
BankAccountId(sc,user);
//print(user);
}elseif(xuanze == 3){
break;
}
else{System.out.println("输入有误!");}
}
}
publicstaticvoid BankAccountId(Scanner sc, geren1[] user){
System.out.println("==== 注 册 ====");
for (inti=0;i<user.length;i++)
{
if (user[i] == null)
{
System.out.println("请输入注册账号:");
//user[i][0] = sc.next();
String zhanghao = sc.next();
System.out.println("请输入注册密码:");
//user[i][1] = sc.next();
String mima = sc.next();
System.out.println("请输入您的真实姓名:");
String name = sc.next();
System.out.println("请输入手机号:");
//zijin[i][2] = sc.nextInt();
String phone = sc.next();
geren1 gr = new geren1(zhanghao,mima,name,phone,i);
user[i] = gr;
System.out.println("注册成功");
return;
}
}
}
publicstaticvoiddenglu1(Scanner sc,geren1[] user){
System.out.println("==== 登 录 =====");
System.out.println("请输入账号:");
String zh = sc.next();
System.out.println("请输入密码:");
String mm = sc.next();
for (inti = 0;i<user.length;i++){
//System.out.println(user[i]);
if (user[i] != null){
geren1 gr = user[i];
//System.out.println(gr.getZijin());
if (zh.equals(gr.getZhanghao()) && mm.equals(gr.getMima()))
{
System.out.println("登录成功!");
grjiemian(sc,user,gr);
return;
}
}
}
System.out.println("无此账号或密码错误!");
}
publicstaticvoid grjiemian(Scanner sc,geren1[] user,geren1 gr){
while(true){
System.out.println("==== 个人页面 =====");
System.out.println("请选择您要办理的业务:");
System.out.println("1,存款\t\t\t2,取款");
System.out.println("3,查询余额\t\t4,转账");
System.out.println("5,查询个人信息\t6,退出登录");
intxuanze = sc.nextInt();
if (xuanze == 1){
System.out.println("请输入存款金额:");
gr.setZijin(gr.getZijin()+sc.nextInt());
System.out.println("存款成功,当前余额:"+gr.getZijin()+"元");
}elseif (xuanze == 2){
System.out.println("请输入取款金额:");
intqk = sc.nextInt();
if(qk>gr.getZijin()){
System.out.println("余额不足。。。");
}else{
gr.setZijin(gr.getZijin()-qk);
System.out.println("取款成功,当前余额:"+gr.getZijin()+"元");
}
}elseif(xuanze == 3){
System.out.println("当前余额:"+gr.getZijin()+"元");
}
elseif(xuanze == 4){
System.out.println("请输入转账账号:");
String zh = sc.next();
System.out.println("请输入转账金额:");
intjine = sc.nextInt();
for (intzhao = 0;zhao<user.length;zhao++){
if (user[zhao] !=null){
geren1 gr1 = user[zhao];
if (zh.equals(gr1.getZhanghao())){
gr1.setZijin(gr1.getZijin()+jine);
gr.setZijin(gr.getZijin() - jine);
}
}
}
}
elseif(xuanze == 5){
gr.print();
}
elseif(xuanze == 6){
return;
}
}
}
}
编辑
9、 编写一个程序,已有若干学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。思路:设计一个学生类Stud,除了包括no(学号)、name(姓名)、和deg(成绩)数据成员外。有两个静态变量sum和num,分别存放总分和人数,另有一个构造方法、一个普通成员方法disp()和一个静态成员方法avg(),它用于计算平均分。
import java.util.Scanner;
publicclass Student {
intno;
String name;
doublescore;
staticdoublesum;
staticintnum;
public Student() {
}
publicvoiddisp() {
Scanner sc= new Scanner(System.in);
System.out.println("请输入存放同学的位数为*人");
num = sc.nextInt();
System.out.println("请输入学号");
no = sc.nextInt();
System.out.println("请输入名字");
name = sc.next();
System.out.println("请输入成绩");
score = sc.nextDouble();
sum = sum+score;
}
staticdouble ave() {returnsum/num;}
publicvoid showInto() {
System.out.println("该同学学号为"+no);
System.out.println("该同学名字为"+name);
System.out.println("该同学成绩为"+score);
System.out.println("截至该同学目前平均成绩为"+ave());
}
}
\\
publicclass Stud {
publicstaticvoid main(String[] args) {
System.out.println("请存放三个学生的信息");
Student one = new Student();
Student two = new Student();
Student three = new Student();
one.disp();
one.showInto();
two.disp();
two.showInto();
three.disp();
three.showInto();
}
}
编辑
10.编写一个程序,统计学生成绩,其功能包括输入学生的姓名和成绩,按成绩从高到低排列打印输出,对前70%的学生定为合格(PASS),而后30%的学生定为不合格(FAIL)。思路: 设计一个类student,包含学生的姓名和成绩等数据。设计一个类Compute: sort()、disp(),它们分别用于按成绩排序和输出数据。
student类
publicclass Student {
String name;
doubledeg;
public Student(String name, doubledeg) {
this.name = name;
this.deg = deg;
}
}
compute类
publicclass Compute {
publicvoid sort(Student [] students){
for(inti = 0;i < students.length;i++){
for(intj = i;j < students.length;j++){
if(students[i].deg < students[j].deg){
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
publicvoid disp(Student[] students){
sort(students);
for(inti = 0;i < students.length;i++){
if(i <= students.length*0.7-1){
System.out.println("姓名:"+students[i].name+" 成绩:"+students[i].deg+" PASS");
}else {
System.out.println("姓名:"+students[i].name+" 成绩:"+students[i].deg+" FAIL");
}
}
}
}
Demo类
publicclass Demo {
publicstaticvoid main(String[] args) {
Student[] s = new Student[5];
s[0] = new Student("四浪",79);
s[1] = new Student("三根",88);
s[2] = new Student("二狗",56);
s[3] = new Student("一休",75);
s[4] = new Student("零零",65);
Compute compute = new Compute();
compute.disp(s);
}
}
编辑