2019-07-23 实验题目
1、学校中有教师和学生两类人,而在职研究生既是教师又是学生。设计学生和教师两个接口。其中,学生接口包括设置和获取学生学费的方法;教师接口包括用于设置和获取教师工资的方法。定义一个研究生类,实现两个接口,它的成员变量有姓名,性别,年龄,每学期学费,月工资。创建一个研究生对象,如果收入减去学费不足2000元,则输出“需要贷款”信息。
interface student{
void setfee(int f);
int getfee();
}
interface teacher{
void setpay(int p);
int getpay();
}
public class graduate implements student,teacher {
String name;
String sex;
int age;
int fee;
int pay;
graduate(String n,String s,int a){
this.name=n;
this.sex=s;
this.age=a;
}
void show() {
System.out.println("姓名:"+name+",性别:"+sex+",年龄:"+age);
}
public void setfee(int f){
fee=f;
}
public int getfee(){
return fee;
}
public void setpay(int p){
pay=p;
}
public int getpay(){
return pay;
}
public static void main(String args[]){
System.out.println("研究生信息:");
graduate g=new graduate("丽丽","女",20);
g.show();
g.setfee(7000);
g.setpay(700);
if((g.getpay()*12-g.getfee())<=2000){
System.out.println("需要贷款!");
}
else
System.out.println("无需贷款!");
}
}
2、编写一个应用程序,接受用户输入的一行字符串,统计字符个数,然后反序输出。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class zfc2 {
public static void main(String args[]) {
InputStreamReader ir;
BufferedReader in;
ir=new InputStreamReader(System.in);
in=new BufferedReader(ir);
System.out.println("请输入字符串:");
try {
String s=in.readLine();
System.out.println("字符串长度是:"+s.length());
System.out.println("反序输出为:");
for(int i=s.length();i>0;i--) {
System.out.print(s.substring(i-1,i));
}
}
catch(IOException e) {
e.printStackTrace();
}
}
3、编程实现将两个文本文件中的内容合并到另一个文本文件中。
import java.io.*;
public class SequenceInputStreamDemo {
public static void main(String args[]) throws IOException{
InputStream s1=new FileInputStream("D:\\a.txt");
InputStream s2=new FileInputStream("D:\\b.txt");
SequenceInputStream is=new SequenceInputStream(s1,s2);
BufferedOutputStream os=new BufferedOutputStream(new FileOutputStream("D:\\c.txt"));
byte[] bytes=new byte[1024];
int len=0;
while((len=is.read(bytes))!=-1) {
os.write(bytes,0,len);
os.flush();
}
is.close();
os.close();
}
}
4、编写一个学校类,其中包含数据成员“录取分数线”和对该变量值进行设置和获取的方法。编写一个学生类,数据成员有考生的姓名、考号、综合成绩,还有获取学生综合成绩的方法。编写一个录取类,它的方法用于判断学生是否符合录取条件,其中录取条件为:综合成绩在录取分数线之上。在该类中建立学生对象,对符合录取条件的学生输出其信息。
class school{
public static int line=300;
public void refer(){
System.out.println("本校录取分数线:"+line);
}
}
class student{
public student(String number,String name,int score){
System.out.println("学号:"+number);
System.out.println("姓名:"+name);
System.out.println("综合成绩:"+score);
}
}
public class admit extends school{
public admit(int score){
if(score>300){
System.out.println("被录取!");
}
else{
System.out.println("未录取!");
}
}
public static void main(String args[]){
String number[]={"1080601","1080602","1080603","1080604","1080605"};
String name[]={"丽丽","欢欢","玲玲","乐乐","亮亮"};
int score[]={510,440,299,260,385};
school sc=new school();
sc.refer();
for(int i=0;i<5;i++){
new student(number[i],name[i],score[i]);
new admit(score[i]);
}
}
}
5、编写程序实现:接受命令行中给出的一个字符串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若为大写则统计该串中大写字母的个数,并将所有大写字母输出,否则,输出信息串“第一个字母不是大写字母!”。
import java.util.Scanner;
public class zfc1 {
public static void main(String args[]) {
System.out.println("请输入一个字符串:");
Scanner in=new Scanner(System.in);
String s=in.nextLine();
System.out.println(s);
char x=s.charAt(0);
if(x>=65&&x<=90) {
int n=0;
char[]Arr=s.toCharArray();
for(int i=0;i<=s.length()-1;i++) {
if(Arr[i]>='A'&&Arr[i]<='Z') {
System.out.println("输出大写字母"+Arr[i]);
n++;
}
}
System.out.println("大写字母个数:"+n);
}
else {
System.out.println("第一个字母不是大写字母!");
}
}
}
6、在屏幕上显示出从键盘输入的姓名,然后将输入的姓名保存到文本文件中,重复进行,直到输入end字符串为止。
import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;
public class txt {
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
StringBuffer sbf=new StringBuffer();
while(sc.hasNext()) {
String in=sc.next();
if(in.equals("end")) {
break;
}
sbf.append(in);
try {
File file=new File("d:\\1.txt");
FileWriter fw=new FileWriter(file);
fw.write(sbf.toString());
fw.close();
}
catch(Exception e) {
e.printStackTrace();
}
}
}
}
7、定义一个交通工具类,其中属性包括:速度、类别、颜色,方法包括设置速度、设置颜色、获取类别、获取颜色。设计一个小车类继承自交通工具类,小车类中增加了属性:座位数,增加了设置和获取座位数的方法,创建小车类对象,为其设置新速度和颜色,并显示其所有属性。
public class vehicle {
String color;
int speed;
String kind;
vehicle(){
speed=0;
color="";
kind="";
}
public void setcolor(String color1) {
color=color1;
}
public void setspeed(int speed1) {
speed=speed1;
}
public void setkind(String kind1) {
kind=kind1;
}
public String getcolor() {
return color;
}
public int getspeed() {
return speed;
}
public String getkind() {
return kind;
}
}
class car extends vehicle{
int seat;
public car() {
super();
seat=0;
}
public void setseat(int seat) {
this.seat=seat;
}
public int getseat() {
return seat;
}
public static void main(String args[]) {
car Car=new car();
Car.setcolor("white");
Car.setspeed(100);
Car.setkind("Maserati");
Car.setseat(2);
System.out.println("种类:"+Car.getkind());
System.out.println("颜色:"+Car.getcolor());
System.out.print("速度(km/h)"+Car.getspeed());
System.out.print("座位数:"+Car.getseat());
}
}
8、设计一个学生类,具有属性:姓名、年龄、学位。由学生类派生出本科生类和研究生类,本科生类增加属性:专业,研究生类增加属性:研究方向,每个类都有show()方法,用于输出属性信息。
class student {
String name;
int age;
String degree;
student(String name,int age,String degree){
this.name =name;
this.age =age;
this.degree =degree;
}
void show(){
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("学位:"+degree);
}
}
class Undergraduate extends student{
String major;
Undergraduate(String name,int age,String degree,String major){
super(name,age,degree);
this.major=major;
}
public void show() {
super.show();
System.out.println("专业:"+major);
}
}
class Graduate extends student{
String direction;
Graduate(String name,int age,String degree,String direction){
super(name,age,degree);
this.direction=direction;
}
public void show() {
super.show();
System.out.println("研究方向:"+direction);
}
}
public class sstudent{
public static void main(String[] args) {
Undergraduate undergraduate=new Undergraduate("丽丽",19,"本科","软件工程");
undergraduate.show();
Graduate graduate=new Graduate("玲玲",21,"研究生","计算机科学与技术");
graduate.show();
}
}
9、读一个文本文件,将文件中所有字符都转变为大写,然后写回到原文件中。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
public class chartest {
public static void main(String[] args) {
String in = "d:\\a.txt";
String out = "d:\\a.txt";
String str = "";
try {
File infile = new File(in);
BufferedReader reader = new BufferedReader(new FileReader(infile));
String i = null;
while ((i = reader.readLine()) != null) {
str += i;
}
reader.close();
File outfile = new File(out);
if (!outfile.exists()) {
outfile.createNewFile();
}
FileWriter fw = new FileWriter(outfile.getAbsoluteFile());
BufferedWriter bufferWritter = new BufferedWriter(fw);
bufferWritter.write(str.toUpperCase());
bufferWritter.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
10、编写程序,定义一个circle类,其中有求面积的方法,当圆的半径小于0时,抛出一个自定义的异常。
class EX extends Exception{
double r;
EX(){
}
EX(double i){
r=i;
}
public double getr() {
return r;
}
public double Area() {
return 3.14*r*r;
}
}
public class circle {
public static void main(String args[]) {
EX c=new EX(-5.0);
try {
if(c.getr()<0) {
EX e=new EX();
throw e;
}
System.out.println(c.Area());
}
catch(EX e) {
System.out.println("自定义异常:"+e);
}
}
}
11、编写程序,从键盘读入5个字符放入一个字符数组,并在屏幕上显示。在程序中处理数组越界的异常。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class readchar{
public static void main(String args[]) throws IOException{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入五个字符:");
String txt=buf.readLine();
char c[]=new char[5];
try {
for(int i=0;i<txt.length();i++) {
c[i]=txt.charAt(i);
System.out.println(c[i]);
}
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println();
System.out.println("输入字符超出要求,只显示前五个字符");
}
}
}
12、编写Java Application,要求从命令行以参数形式读入两个数据,计算它们的和,然后将和输出。对自定义异常OnlyOneException与NoOprandException进行编程。如果参数的数目不足,则显示相应提示信息并退出程序的执行。
public class application {
public static void main(String args[]) throws NoOprandException,OnlyOneException{
try {
if(args.length==0)
throw new NoOprandException();
else
{
try{
if(args.length<2)
throw new OnlyOneException();
else {
int sum;
sum=Integer.parseInt(args[0])+Integer.parseInt(args[1]);
System.out.println("这个数是:"+sum);
}
}
catch(OnlyOneException e1) {
e1.show1();
}
}
}
catch(NoOprandException e2) {
e2.show2();
}
}
}
class OnlyOneException extends Exception {
public void OnlyOneException() {
}
public void show1() {
System.out.println("只有一个数,请输入另一个!");
}
}
class NoOprandException extends Exception{
public void NoOprandException() {
}
public void show2() {
System.out.println("请输入两个数据!");
}
}
13、设计一个活期存折类,其中包括成员变量:姓名、编号、家庭地址、存款额、密码。创建该类的对象,为对象办理一个活期存折。
public class bank {
String name;
int id;
String adress;
int balance;
long password;
bank(String name,int id,String adress, int b,long pw){
this.name =name;
this.adress =adress;
this.id =id;
this.adress =adress;
this.balance =b;
this.password =pw;
}
void show() {
System.out.println("姓名:"+name);
System.out.println("编号:"+id);
System.out.println("家庭住址:"+adress);
System.out.println("存款额:"+balance);
System.out.println("密码:"+password);
}
public static void main(String args[]) {
bank Bank=new bank("丽丽",113,"陕西省西安市未央区",1000,123456);
Bank.show();
}
}
14、模拟银行账户功能,要求属性有:账号、姓名、地址、存款余额;方法有:存款、取款、查询。如存款操作后,显示储户原有余额、今日存款数及最终存款余额;取款时若余额小于取款数,则拒绝取款。
import java.util.Scanner;
class bankaccount{
long account;
String name,address;
double money;
double inmoney;
double outmoney;
bankaccount(long account,String name,String address,double money){
this.account=account;
this.name=name;
this.address=address;
this.money=money;
}
void show() {
System.out.println("账号:"+account);
System.out.println("姓名:"+name);
System.out.println("地址:"+address);
System.out.println("余额:"+money);
}
void getinmoney(){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入存款数目:");
double in=sc1.nextDouble();
System.out.println("您的存款数目为"+in+"元");
System.out.println("账户余额:"+(money+in)+"元");
this.money=money+in;
}
void getoutmoney(){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入取款数目:");
double out=sc1.nextDouble();
if(out>money){
System.out.println("取款失败,余额不足!");
System.out.println("账户余额:"+money+"元");
}
else{
System.out.println("您的取款数目为"+out+"元");
System.out.println("账户余额:"+(money-out)+"元");
}
this.money=money-out;
}
double getsearch(){
return money;
}
}
public class account{
public static void main(String args[]){
System.out.println("当前账户信息:");
bankaccount bank=new bankaccount(1130514,"丽丽","陕西省西安市未央区",1000);
bank.show();
int P=0,n,a;
do {
System.out.println("请选择服务类型:");
System.out.println("1.存款");
System.out.println("2.取款");
System.out.println("3.查询");
Scanner sc=new Scanner(System.in);
n=sc.nextInt();
if(n==1){
bank.getinmoney();
}
else if(n==2){
bank.getoutmoney();
}
else if(n==3){
System.out.println("当前余额为:"+bank.getsearch()+"元");
}
else {
System.out.println("请输入‘1’,‘2’或‘3’。");
continue;
}
System.out.println("若要继续,请输入‘1’,否则退出系统");
a=sc.nextInt();
if(a!=1) {
P=1;
}
}
while(P==0);
System.out.println("谢谢使用!");
}
}
15、设计实现地址功能类,具有属性:省、市、街道、门牌号、邮编,具有设置和获取属性的方法。
public class address{
String province;
String city;
String street;
String housenumber;
public void setprovince(String province1){
province=province1;
}
public void setcity(String city1){
city=city1;
}
public void setstreet(String street1){
street=street1;
}
public void sethousenumber(String housenumber1){
housenumber=housenumber1;
}
public String getprovince() {
return province;
}
public String getcity() {
return city;
}
public String getstreet() {
return street;
}
public String gethousenumber() {
return housenumber;
}
public static void main(String args[]){
address addr=new address();
addr.setprovince("陕西省");
addr.setcity("西安市");
addr.setstreet("未央湖街道");
addr.sethousenumber("1113号");
System.out.println("地址信息:");
System.out.println("省:"+addr.getprovince());
System.out.println("市:"+addr.getcity());
System.out.println("街道:"+addr.getstreet());
System.out.println("门牌号:"+addr.gethousenumber());
}
}
16、定义生物、动物、人三个接口,其中生物接口声明了呼吸方法,动物接口声明了性别和吃食的方法,人接口声明了思考和学习的方法。定义类实现上述三个接口,实现声明的方法。
interface biogloy{
public void breath();
}
interface animal{
public void eat();
public void sex();
}
interface person {
public void thinking();
public void study();
}
class text implements biogloy,animal,person {
public void breath() {
System.out.println("生物会呼吸");
}
public void eat() {
System.out.println("动物会吃食物");
}
public void sex() {
System.out.println("动物分性别");
}
public void thinking() {
System.out.println("人类会思考");
}
public void study() {
System.out.println("人类会学习");
}
}
public class test{
public static void main(String main[]) {
text a=new text();
a.breath();
a.eat();
a.sex();
a.thinking();
a.study();
}
}