定义一个抽象类Shape,他的属性有length和height,以及用于计算面积和周长的抽象方法area(),perimeter()。定义两个非抽象子类分别是长方形Rectangle和三角形Triangle。设计一个主类,分别测试Rectangle和Triangle的方法。(三角形面积公式为:s=(a+b+c)/2; area=Math.sqrt(s*(s-a)(s-b) (s-c)))
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape s;//声明抽象类对象引用
Rectangle r=new Rectangle(5, 6);
s=r;//向上转型
System.out.println("长方形的面积:"+s.area());
System.out.println("长方形的周长:"+s.perimeter());
Triangle t=new Triangle(3, 4, 5);
s=t;
System.out.println("三角形的面积:"+s.area());
System.out.println("三角形的周长:"+s.perimeter());
}
}
abstract class Shape{
int length;
int height;
public Shape(int l,int h){
length=l;
height=h;
}
public int getLength(){
return length;
}
public int getHeight(){
return height;
}
public abstract double area();//抽象方法,计算面积
public abstract int perimeter();//抽象方法,计算周长
}
class Rectangle extends Shape{
public Rectangle(int l, int h) {
super(l, h);
// TODO Auto-generated constructor stub
}
@Override
public double area() {
// TODO Auto-generated method stub
return this.getHeight()*this.getLength();
}
@Override
public int perimeter() {
// TODO Auto-generated method stub
return (this.height+this.length)*2;
}
}
class Triangle extends Shape{
private int c;//第三边
public Triangle(int l,int h,int c) {
super(h,l);
this.c=c;
// TODO Auto-generated constructor stub
}
@Override
public double area() {
// TODO Auto-generated method stub
return (this.getHeight()+this.getLength()+c)/2;
}
@Override
public int perimeter() {
// TODO Auto-generated method stub
return this.getHeight()+this.getLength()+c;
}
}
定义一个包含计算面积方法area()和计算体积抽象方法volume()的几何图形接口Shape。然后再定义实现该接口的正方体、长方体、圆柱体的类。最后设计一个主程序,利用多态特性计算正方体、长方体、圆柱体的面积与体积
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Shape s;//接口类型的引用
Cube cube=new Cube(3);
Cuboid cuboid=new Cuboid(3, 4, 5);
Cylinder cyl=new Cylinder(4, 5);
s=cube;
System.out.println("正方体的面积:"+s.area());
System.out.println("正方体的体积:"+s.volume());
s=cuboid;
System.out.println("长方体的面积:"+s.area());
System.out.println("长方体的体积:"+s.volume());
s=cyl;
System.out.println("圆柱体的面积:"+s.area());
System.out.println("圆柱体的体积:"+s.volume());
}
}
interface Shape{
double area();
double volume();
}
class Cube implements Shape{//正方体
double a;//棱长
public Cube(double x) {
// TODO Auto-generated constructor stub
a=x;
}
@Override
public double area() {
// TODO Auto-generated method stub
return a*a*6;
}
@Override
public double volume() {
// TODO Auto-generated method stub
return a*a*a;
}
}
class Cuboid implements Shape{
double a,b,c;
public Cuboid(double x,double y,double z) {
// TODO Auto-generated constructor stub
a=x;
b=y;
c=z;
}
@Override
public double area() {
// TODO Auto-generated method stub
return (a*b+a*c+b*c)*2;
}
@Override
public double volume() {
// TODO Auto-generated method stub
return a*b*c;
}//长方体
}
class Cylinder implements Shape{
double r,h;
public Cylinder(double x,double y) {
// TODO Auto-generated constructor stub
r=x;
h=y;
}
@Override
public double area() {
// TODO Auto-generated method stub
return Math.PI*r*r*2+Math.PI*2*r*h;
}
@Override
public double volume() {
// TODO Auto-generated method stub
return Math.PI*r*r*h;
}//圆柱体
}
定义一个Compute接口,由抽象方法add()、substract()、multiply()、divide()分别实现加减乘除四种运算功能。再定义一个类Computer,它有两个成员变量X(int)和Y(int),两个构造函数(无参数和有两个参数的),四个成员函数(分别获取和修改X,Y的值)。用Computer类实现Compute接口,分别用四个接口方法实现X和Y两个变量的加减乘除运算。最后定义一个主类TestComputer,测试Computer类以及集合的方法
public class TestComputer {
public static void main(String[] args) {
Computer c1=new Computer(40,5);
Compute cc;//接口类型的引用
cc=c1;//向上转型
cc.add();//调用Computer中方法实现
cc.substract();
cc.multiply();
cc.divide();
System.out.println();
Computer c2=new Computer();
c2.setX(2);
c2.setY(4);
c2.add();
c2.substract();
c2.multiply();
c2.divide();
}
}
interface Compute{
void add();
void substract();
void multiply();
void divide();//加减乘除四种运算功能
}
class Computer implements Compute{
int X;
int Y;
public Computer() {
// TODO Auto-generated constructor stub
}
public Computer(int x,int y) {
this.X=x;
this.Y=y;
}
public int getX() {
return X;
}
public void setX(int x) {
X = x;
}
public int getY() {
return Y;
}
public void setY(int y) {
Y = y;
}
@Override
public void add() {//实现接口中的方法
// TODO Auto-generated method stub
System.out.println("和为:"+(X+Y));
}
@Override
public void substract() {
// TODO Auto-generated method stub
System.out.println("差为:"+(X-Y));
}
@Override
public void multiply() {
// TODO Auto-generated method stub
System.out.println("积为:"+(X*Y));
}
@Override
public void divide() {
// TODO Auto-generated method stub
System.out.println("商为:"+(X/Y));
}
}
自定义学生类,每个学生对象包括学号,姓名,性别,年龄,联系方式和地址等属性。编写一个程序能够对学生对象进行插入,修改,浏览,统计人数等功能。要求利用相关集合类。(a.定义学生类:成员变量,类的方法—构造方法,设置和读取各数据成员的方法;b.定义管理学生对象的类:成员变量—用于存放全部学生对象的集合和学生人数;方法—构造方法,创建存储学生对象集合,完成学生对象的添加,删除,修改,浏览和统计人数五个方法;c.定义主类测试)
import java.util.ArrayList;
import java.util.List;
import java.util.Iterator;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Main m=new Main();
m.stuAdd();
m.stuBrowse();
m.stuRemove();
m.stuModify();
}
public List<Student> stu;
public Main() {
this.stu=new ArrayList<Student>();
}
public void stuAdd() {
System.out.println("添加学生信息:");
Student stu1=new Student("1201", "张", true, 18, "100000", "科技大学");
stu.add(stu1);
Student temp1=(Student)stu.get(0);
System.out.println("添加了学生:"+temp1.sid+" "+temp1.name+" "+
temp1.gender+" "+temp1.age+" "+temp1.contact+" "+temp1.address);
Student stu2=new Student("1202", "王", false, 19, "100001", "哈佛大学");
stu.add(1, stu2);
Student temp2=(Student)stu.get(1);
System.out.println("添加了学生:"+temp2.sid+" "+temp2.name+" "+
temp2.gender+" "+temp2.age+" "+temp2.contact+" "+temp2.address);
Student stu3=new Student("1203", "赵", true, 20, "100003", "科技大学");
stu.add(stu3);
Student temp3=(Student)stu.get(2);
System.out.println("添加了学生:"+temp3.sid+" "+temp3.name+" "+
temp3.gender+" "+temp3.age+" "+temp3.contact+" "+temp3.address);
}
public void stuBrowse() {
System.out.println("所有学生信息如下:");
Iterator<Student> it=stu.iterator();
int i=0;
while(it.hasNext()) {
Student s=(Student)it.next();
System.out.println("学生:"+s.sid+" "+s.name+" "+
s.gender+" "+s.age+" "+s.contact+" "+s.address);
i++;
}
System.out.println("共有"+i+"个学生!");
}
public void stuRemove() {
System.out.println("即将删除1位置的学生信息;");
stu.remove(1);
System.out.println("已被删除;");
stuBrowse();
}
public void stuModify() {
System.out.println("修改学生信息为:");
stu.set(0, new Student("1219", "武", true, 20, "100000", "科技大学"));
stuBrowse();
}
}
class Student{
String sid;
String name;
boolean gender;
int age;
String contact;
String address;
public Student(String sid,String name,boolean gender,
int age,String contact,String address) {
this.sid=sid;
this.name=name;
this.gender=gender;
this.age=age;
this.contact=contact;
this.address=address;
}
}
class Manage{
int stuNum;
public Set students;
public Manage(int stuNum) {
this.stuNum=stuNum;
this.students=new HashSet();
}
}
利用Scanner类从键盘读入一行字符串,实现下列功能:a.将字符串中的字符按字母顺序排序后输出;b.统计每个字符出现的次数和位置。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner get=new Scanner(System.in);
String str=get.nextLine();
char c[]=new char[str.length()];
char temp;
for(int i=0;i<str.length();i++) {
c[i]=str.charAt(i);
}
for(int j=0;j<str.length();j++) {
System.out.println(Arrays.toString(count(str,c[j])));
}
for(int i=0;i<c.length;i++) {
for(int j=i+1;j<c.length;j++) {
if(c[i]>c[j]) {
temp=c[i];
c[i]=c[j];
c[j]=temp;
}
}
System.out.print(c[i]);
}
get.close();
}
public static int[] count(String s,char k) {
int num0=0;
int[] count= {};
for(int i=0;i<s.length();i++) {
char ch=s.charAt(i);
if(ch==k) {
count=Arrays.copyOf(count, count.length+1);
count[count.length-1]=i;
num0++;
}
}
System.out.println(k+"出现的次数为:"+num0+" ");
System.out.print(k+"出现的位置是:");
return count;
}
}
编写一个机动车驾驶证管理程序,实现驾驶证的查询,添加,浏览等功能。其中身份证作为键,驾驶证包括驾驶类型,颁发日期,年检日期等信息作为键所对应的值。(利用Map相关类)
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class ManageLicense {
public static void main(String[] args) {
ManageLicense m=new ManageLicense();
m.testPut();
m.testVisit();
m.testSeek();
}
//用来承装驾驶证类型对象
public Map<String,License> licenses;
//在构造器中初始化students属性
public ManageLicense(){
this.licenses=new HashMap<String,License>();
}
public void testPut() {
Scanner console=new Scanner(System.in);
int i=0;
while(i<3) {
System.out.println("请输入身份证号:");
String ID=console.nextLine();
License li=licenses.get(ID);
//判断ID是否被占用
if(li==null) {
System.out.println("请输入驾驶证信息:");
String type=console.nextLine();
String data=console.nextLine();
String inspectData=console.nextLine();
License newLicense=new License(ID,type, data, inspectData);
licenses.put(ID, newLicense);
System.out.println("成功添加驾驶证信息:"+licenses.get(ID).type
+" "+licenses.get(ID).data+" "+licenses.get(ID).inspectData);
i++;
}else {
System.out.println("此ID已被占用!");
continue;
}
}
}
public void testVisit() {
//通过ketSet方法,返回Map中的所有“键”的Set集合
Set<String> keySet=licenses.keySet();
//取得students的容量
System.out.println("总共有:"+licenses.size()+"个驾驶证!");
//遍历keySet,取得每一个键,get方法取得每个键对应的value
for(String licenseid:keySet) {
License li=licenses.get(licenseid);
if(li!=null) {
System.out.println("驾驶证: 类型为:"+li.type+" 颁发日期为:"+li.data+" 年检日期为:"+li.inspectData);
}
}
}
public void testSeek() {
System.out.println("请输入要查询的驾驶证ID:");
Scanner console=new Scanner(System.in);
while(true) {
String ID=console.nextLine();
License li=licenses.get(ID);
if(li==null) {
System.out.println("此ID不存在!");
continue;
}
licenses.get(ID);
System.out.println("成功查询到驾驶证::"+"类型为:"+li.type+" 颁发日期为:"+li.data+" 年检日期为:"+li.inspectData);
break;
}
}
}
class License{
String ID;
String type;
String data;
String inspectData;
public License(String ID,String type,String data,String inspectData) {
this.ID=ID;
this.type=type;
this.data=data;
this.inspectData=inspectData;
}
}
用Scanner类实现从命令行读取任意数据类型的数据,并实现随时可终止读取
import java.util.Scanner;
public class WYJ {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner get=new Scanner(System.in);
System.out.println("请输入一个数据:");
while(true) {//为了达到一直循环的效果
if(get.hasNextInt() ){
int a=get.nextInt();
System.out.println("输入的数据类型为整数:"+a);
}else if(get.hasNextDouble()) {
double b=get.nextDouble();
System.out.println("输入的数据类型为双精度浮点型:"+b);
}else if(get.hasNextFloat()) {
float c=get.nextFloat();
System.out.println("输入的数据类型为单精度浮点型:"+c);
}else if(get.hasNextLine()) {
String d=get.nextLine();
System.out.println("输入的数据类型为字符串类型:"+d);
String str="quit";
if(d.equals(str)) {
System.out.println("终止数据!");
break;
}
}
}
}
}