JAVA上机题
第二次上机
//定义一个复数类,完成复数的加减运算,并进行测试。
public class Complex //定义复数类
{
float real, image;//定义数据成员,实部、虚部
void setComplex (float real, float image)//方法,为变量成员赋值
{
this.real = real;
this.image = image;
}
Complex add(Complex c2)//复数相加
{
Complex k = new Complex();
k.real = this.real + c2.real;//this可以省略
k.image= this.image + c2.image;
return k;
}
Complex subtract(Complex c2)//复数相减
{
Complex k = new Complex();
k.real = real - c2.real;
k.image= image - c2.image;
return k;
}
void print()//输出复数
{System.out.print(real);
if (image<0) {System.out.print("-");System.out.println(-image+"i");} else {System.out.print("+");System.out.println(image+"i");}
}
}
class Test//定义测试类
{
public static void main(String[] args){
Complex c1 = new Complex();
c1.setComplex(5, -7);
Complex c2= new Complex();
c2.setComplex(8, 18);
Complex sum = c1.add(c2);//两个复数相加
Complex sub = c1.subtract(c2);//两个复数相加
System.out.print("第一个复数为:");
c1.print();//输出复数
System.out.print("第二个复数为:");
c2.print();
System.out.print("两个复数相加的结果为:");
sum.print();
System.out.print("两个复数相减的结果为:");
sub.print();
}
}
//定义并实现一个矩形类,有长、宽两个属性(长、宽均设置成private成员),由方法计算矩形的周长和面积,并进行测试。
class Rectangle //定义矩形类
{
private double height, wide;//成员变量
void setValue(double height, double wide )//方法,为数据成员height和wide赋值{this.height = height; //局部变量与成员变量同名,此时必须使用this来引用成员变量this.wide = wide;}
void setHeight(double height )//方法,为数据成员height赋值
{this.height = height; }//局部变量与
void setWide(double wide )//方法,为数据成员wide赋值
{this.wide = wide;}
double area(){ //方法,计算面积
return(height * wide);
}
double size(){ //方法,计算周长
return(2*height + 2*wide);
}
void display()//方法,输出数据成员
{System.out.println("矩形高="+height+","+"矩形宽="+wide);}
}
class Test//定义测试类
{
public static void main(String[] args) {
Rectangle r = new Rectangle(); //创建对象,调用相应构造函数
r.setValue(2, 5);//为矩形对象r的宽、高赋值
r.display();//调用方法
System.out.println("面积为:"+r.area());
System.out.println("周长为:"+r.size());
Rectangle r2 = new Rectangle(); //创建对象,调用相应构造函数
r2.setValue(6, 10);
r2.display();//调用方法
System.out.println("面积为:"+r2.area());
System.out.println("周长为:"+r2.size());
r2.setWide(18);//调用方法,为矩形r2的宽赋值,即改变r2的宽度
r2.display();//调用方法
System.out.println("面积为:"+r2.area());
System.out.println("周长为:"+r2.size());
}
第三次上机
//定义一个复数类,完成复数的加减运算,并进行测试。要求:定义2个以上的构造函数,并用其完成属性值的初始化。
public class Complex //定义复数类
{
float real, image;//定义数据成员,实部、虚部
Complex() //构造函数
{}
Complex(float real,float image) //重载构造函数
{this.real = real;
this.image = image;}
void setComplex (float real, float image)//方法,为变量成员赋值
{
this.real = real;
this.image = image;
}
Complex add(Complex c2)//复数相加
{
Complex k = new Complex();
k.real = this.real + c2.real;//this可以省略
k.image= this.image + c2.image;
return k;
}
Complex subtract(Complex c2)//复数相减
{
Complex k = new Complex();
k.real = real - c2.real;
k.image= image - c2.image;
return k;
}
void print()//输出复数
{System.out.print(real);
if (image<0) {System.out.print("-");System.out.println(-image+"i");}
else {System.out.print("+");System.out.println(image+"i");}
}
}
class Test//定义测试类
{
public static void main(String[] args){
Complex c1 = new Complex();//用不带参数的构造函数初始化对象c1
c1.setComplex(5, -7);//用setComplex方法给对象的数据成员赋值
Complex c2= new Complex(8,10);//用带2个参数的构造函数初始化对象c2
Complex sum = c1.add(c2);//两个复数相加
Complex sub = c1.subtract(c2);//两个复数相加
System.out.print("第一个复数为:");
c1.print();//输出复数
System.out.print("第二个复数为:");
c2.print();
System.out.print("两个复数相加的结果为:");
sum.print();
System.out.print("两个复数相减的结果为:");
sub.print();
}
}
//定义并实现一个矩形类,有对角线顶点坐标属性,定义方法计算矩形的周长和面积,并进行测试。要求:定义2个以上的构造函数,并用其完成属性值的初始化。
class Rectangle //定义矩形类
{
private double x1,y1,x2,y2;//成员变量,代表两个顶点坐标
Rectangle()//构造函数
{}
Rectangle(double x1, double y1, double x2, double y2)//重载构造函数
{this.x1 = x1; //局部变量与成员变量同名,此时必须使用this来引用成员变量
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;}
void setValue(double x1, double y1, double x2, double y2)//方法,为数据成员赋值{this.x1 = x1; //局部变量与成员变量同名,此时必须使用this来引用成员变量
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;}
double area(){ //方法,计算面积
return(Math.abs(x2-x1)*Math.abs(y2-y1));
}
double size(){ //方法,计算周长
return(2*(Math.abs(x2-x1)+Math.abs(y2-y1)));
}
void display()//方法,输出数据成员
{System.out.println("顶点坐标分别为:"+"("+x1+","+y1+")"+","+"("+x2+","+y2+")");
}
}
class Test//定义测试类
{
public static void main(String[] args) {
Rectangle r = new Rectangle(); //创建对象,调用相应构造函数
r.setValue(2, 5,10,19);//为矩形对象r的两个顶点赋值
r.display();//调用方法
System.out.println("面积为:"+r.area());
System.out.println("周长为:"+r.size());
System.out.println("-----------------");
Rectangle r2 = new Rectangle(3,3,7,-9); //创建对象,调用相应构造函数直接完成给数据成员赋值
r2.display();//调用方法
System.out.println("面积为:"+r2.area());
System.out.println("周长为:"+r2.size());
}
}
/声明一个Employee 类,其中包括单位名称,姓名、街道地址、城市和邮编等私有属性,以及change_name()和display()等方法。display()显示单位名称、姓名、街道地址、性别和邮编等属性,change_name()改变对象的姓名属性。声明包含5 个元素的对象数组,每个元素
都是Employee 类型的对象,并输出这5个对象的数据成员。要求:单位名称定义成类变量(也称静态变量,用static修饰);定义2个以上的构造函数,并用其完成属性值的初始化。class Employee//定义Employee
{
static String company="成都信息工程学院";//定义单位名称为静态变量
private String name, address, sex, postcode;
Employee()//构造函数
{}
Employee(String name,String address,String sex,String postcode)//构造函数
{ https://www.360docs.net/doc/e33460488.html, = name;
this.address = address;
this.sex = sex;
this.postcode = postcode;
}
public static void change_company(String c) //设置单位名称
{
company = c;
}
public void change_name(String name) //设置姓名
{
https://www.360docs.net/doc/e33460488.html, = name;
}
public String getName() //获取姓名,由于name是私有成员,只能在本类访问,所以若要在其他类中获取姓名,必须依靠函数,其他私有成员同理
{
return name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getpostcode() {
return postcode;
}
public void setpostcode(String postcode) {
this.postcode = postcode;
}
public void setEmp(String name,String address,String sex,String postcode)//为数据成员赋值
{
https://www.360docs.net/doc/e33460488.html, = name;
this.address = address;
this.sex = sex;
this.postcode = postcode;
}
public void display() //输出职工各项数据
{
System.out.println("单位:"+company+" 姓名:"+name+" 性别:"+sex+" 地址:"+address+" 邮编:"+postcode);
}
}
class Test //定义测试类
{
public static void main(String[] args){
Employee[] emp = new Employee[5];//定义数组,5个元素
for(int i=0;i<=4;i++)
emp[i] = new Employee();//调用相关构造函数初始化对象
emp[0].setEmp("李勇","3013","女","610333");//引用数组元素,并调用相关函数为数据成员赋值
emp[1].setEmp("张三","3015","女","613211");
emp[2].setEmp("王芳","3015","男","621555");
emp[3].setEmp("春春","3016","男","643222");
emp[4].setEmp("吴璧","3014","女","612229");
for(int i = 0; i<4;i++)//以下输出各员工数据
{
emp[i].display();
System.out.println("--------------------------------------------");
}
emp[0].change_name("王五");//改变姓名
Employee.change_company("成都信息工程大学");
emp[0].display();
System.out.println("============================================");
}
}
第四次上机
abstract class Vehicle{
private int wheels;//定义车轮个数
private double weight;//定义车重
public Vehicle (int wh, double we)//构造函数
{
weight = we;
wheels = wh;
}
public Vehicle ()//重载构造函数
{
}
public void show()//输出数据成员
{
System.out.println("车轮数为:"+ wheels+"个" +'\n'+"车重为:"+ weight+"吨");
}
}
class Car extends Vehicle//继承,定义Vehicle的子类Car
{
private int loader;//新增载客人数成员loader
public Car(int wh, double we,int l)//子类构造函数
{
super(wh,we);//调用父类构造函数
loader = l;//为新增成员赋值
}
public Car()//重载构造函数
{
}
public void show()//重写父类方法
{
super.show();//调用父类的show()方法
System.out.println("载客人数为:"+ loader+"个");
}
}
class Truck extends Car{ //继承,定义Car的子类Truck
private double payload;//新增子类成员载重量payload
public Truck(int wh, double we,int l,double pl){//构造方法
super(wh, we, l);//调用父类构造方法
payload = pl;
}
public Truck(){//重载构造方法
}
public void show(){ //重写父类方法
super.show();
System.out.println("载重量为:"+payload+"吨");
}
}
class Test //定义测试类
{
public static void main(String[] args)
{ // Vehicle vv=new Car(3,2.2);//这句是错的,抽象类不能实例化,即不能new,可定义对象
Car cc=new Car(4,1.24,5);//定义Car对象
System.out.println("Car的信息如下:");
cc.show();
System.out.println("------------------------");
Truck tt = new Truck(6, 2.1, 4, 10);//定义Truck对象
System.out.println("Truck的信息如下:");
tt.show();
}
}
bstract class Shape//定义抽象类
{
protected String name;//图形名称
public Shape(String name)//构造方法
{
https://www.360docs.net/doc/e33460488.html, = name;
System.out.println("名字:"+name);
}
abstract public double getArea();
abstract public double getLength();
}
class Circle extends Shape//定义子类圆Circle
{
private double radius;//新增子类数据成员
private double pi = 3.14;
public Circle(String shapename,double radius)//构造方法
{
super(shapename);//调用父类构造方法
this.radius = radius;
}
public void setRadius(double radius)//新增方法
{this.radius = radius;}
public double getArea(){//实现面积方法
return pi*radius*radius;
}
public double getLength(){//实现周长方法
return 2*pi*radius;
}
}
class Rectangle extends Shape{//定义子类矩形Rectangle
private double width;
private double height;
public Rectangle(String shapename,double width, double height)//构造方法
{
super(shapename);
this.height = height;
this.width = width;
}
public double getArea(){
return width*height;
}
public double getLength(){
return 2*(width + height);
}
}
class Test {
public static void main(String[] args) {
//Shape s1=new Shape(4,1.2);错误,抽象类不能实例化对象,但Shape cir = new Circle("圆形", 5);是对的,即对象的上转型对象
Circle cir = new Circle("圆形", 5);//定义圆对象
System.out.println("面积="+cir.getArea());
System.out.println("周长="+cir.getLength());
//System.out.println("-------------------------");
cir.setRadius(11);//改变cir的半径
System.out.println("改变半径后的圆信息如下:");
System.out.println("面积="+cir.getArea());
System.out.println("周长="+cir.getLength());
System.out.println("-------------------------");
Rectangle rect = new Rectangle("长方形", 3.8,5.8);//定义矩形对象
System.out.println("面积="+rect.getArea());
System.out.println("周长="+rect.getLength());
}
}
第五次上机
mport javax.swing.*;
class Sanjiaoxing{
double a,b,c;
public Sanjiaoxing(double a1,double b1,double c1)//构造方法
{a=a1;b=b1;c=c1;}
//求面积的方法
public double getArea() throws R_Exception
{double p;
//当不能构成三角形时抛出异常
if(a+b R_Exception e = new R_Exception(); throw e; } p=(a+b+c)/2; return(Math.sqrt(p*(p-a)*(p-b)*(p-c))); } } class SanjiaoxingException{ public static void main(String []args){ Sanjiaoxing c1=new Sanjiaoxing(3,3,3); Sanjiaoxing c2=new Sanjiaoxing(1,2,5); try{ System.out.println("三角形的面积是:\n"+c1.getArea()); System.out.println("三角形的面积是:\n"+c2.getArea()); } catch(R_Exception e){ //处理异常时,打印出异常信息,并弹出异常对话框 // System.out.println(e.e_message()); JOptionPane.showMessageDialog(null,e.e_message());//这句要生效的话则前面的import javax.swing.*;必须要,Java中提供了JOptionPane类来实现类似Windows平台下的MessageBox 的功能 } } } //自定义异常类 class R_Exception extends Exception{ String str; //显示异常信息的方法 public String e_message(){ str = "出现异常:\n三边不能构成三角形,无法计算三角形面积"; return str; } } abstract class Person //父类 { public String name; public int age; public String sex; public Person()//构造函数 { } public Person(String name,int age,String sex) //重载构造函数 { https://www.360docs.net/doc/e33460488.html,=name;this.age=age;this.sex=sex; } } interface Jiekou //定义接口 { String country="中国";//定义常量 void printinfo();//定义接口中的方法 } class Student extends Person implements Jiekou //子类Student ,它继承父类Person并使用接口Jiekou { String school; String zhuanye; Student(String name,int age,String sex,String school,String zhuanye) { super(name,age,sex);//调用父类构造函数 this.school=school;this.zhuanye=zhuanye;//为子类新增成员赋值} public void printinfo()//实现接口中的方法,注意要显示写出public { System.out.println("country="+country+",name="+name+",age="+age+",sex="+sex+",school="+s chool+",zhuanye="+zhuanye); } } class Teacher extends Person implements Jiekou //子类Student ,它继承父类Person并使用接口Jiekou { String school; String zhicheng; String teach; Teacher(String name,int age,String sex,String school,String zhicheng,String teach)//构造方法 { super(name,age,sex); this.school=school;this.zhicheng=zhicheng;this.teach=teach; } public void printinfo() //实现接口中的方法,注意要显示写出public { System.out.println("country="+country+",name="+name+",age="+age+",sex="+sex+",school ="+school+",zhicheng="+zhicheng+",teach="+teach); } } class JiekouTest //测试类 { public static void main(String[] args) { Student s1=new Student("王勇",18,"男","清华大学","计算机应用"); //s1.printinfo(); Teacher t1=new Teacher("李杰",24,"女","北京大学","讲师","《数据库原理》"); Person p1; p1=s1;//对象的上转型对象 https://www.360docs.net/doc/e33460488.html,="张三";//正确,引用子类继承的成员变量name //p1.school="复旦大学";//错误,通过上转型对象不能引用子类新增成员,只能引用父类成员 /*Jiekou j1; j1=s1;j1.printinfo();//接口回调 j1=t1;j1.printinfo();//接口回调 */ s1.printinfo(); t1.printinfo(); } } 第六次上机 * 编写一个多线程程序,主方法中有两个线程, 一个用来计算并显示2~1000之间的质数及个数, 一个用来计算并显示5000~10000之间的质数及个数 */ class Prime implements Runnable{//定义线程类Prime ,使用Runnable接口int m,n; Prime(){}//构造函数 Prime(int a,int b){//构造函数 m=a;n=b; } public void run(){//实现接口的Run()方法 getPrime(m,n); } void getPrime(int m,int n){//判断并输出m到n之间的素数 int sum=0; for(int i=m;i int j; for(j=2;j if(i%j==0) break; } if(j==i||j>i) { sum++;System.out.println(i); } } System.out.print(m+"至"+n+"之间的素数个数是"+sum+"\n"); } } public class PrimeThreadTest { public static void main(String[] args) { Prime p1=new Prime(2,1000); Prime p2=new Prime(5000,10000); Thread th1=new Thread(p1);Thread th2=new Thread(p2); th1.start(); //th2.setDaemon(true);//定义后台线程 th2.start(); } } /* 编写一个多线程程序,主方法中有两个线程, 一个用来计算并显示2~1000之间的质数及个数, 一个用来计算并显示5000~10000之间的质数及个数 改成联合线程,先输出2~1000之间的素数及个数,再输出5000~10000之间的素数及个数。*/ class Prime implements Runnable{//定义线程类Prime ,使用Runnable接口int m,n; Prime(){}//构造函数 Prime(int a,int b){//构造函数 m=a;n=b; } public void run(){//实现接口的Run()方法 getPrime(m,n); } void getPrime(int m,int n){//判断并输出m到n之间的素数 int sum=0; for(int i=m;i int j; for(j=2;j if(i%j==0) break; } if(j==i||j>i) { sum++;System.out.println(i); } } System.out.print(m+"至"+n+"之间的素数个数是"+sum+"\n"); } } public class ThreadDemo2 { public static void main(String[] args) { Prime p1=new Prime(2,1000); Prime p2=new Prime(5000,10000); Thread th1=new Thread(p1);Thread th2=new Thread(p2); th1.start(); try {th1.join();} catch(Exception e) {System.out.println(e.getMessage());} th2.start(); } } 第七八次上机 import java.awt.*; import java.applet.*; import java.awt.event.*; public class Draw extends Applet implements ActionListener { String choice1; TextField text1; public void init() //改写父类的init()方法 { Label lab1=new Label("输入欲绘制的图形"); text1=new TextField(10); //初始化文本框 add(lab1); //添加组件到浏览器窗口 add(text1); text1.addActionListener(this); //对text1注册监视器} public void actionPerformed(ActionEvent e) //实现接口中的抽象方法{ choice1=text1.getText(); //获取文本框中的数据 repaint(); //重新调用paint方法 } public void paint(Graphics g) //改写父类的paint方法 { { if(choice1.equals("线")) { for(int i=1;i<=5;i++) g.drawLine(10,50,250,50+i*10); } else if (choice1.equals("圆")) {for(int i=1;i<=5;i++) g.drawOval(10+i*10,10+i*10,50+i*10,50+i*10); } else if(choice1.equals("矩形")) {for(int i=1;i<=5;i++) g.drawRect(10+i*10,10+i*10,50+i*10,50+i*10); } else g.drawString("输入有误!",10,30); } } } /在第一个和第二个文本框中输入两个数据,在第三和第四个文本框中显示两数之和及之差.要求:在第一和第二个文本框中按回车键或者按计算按钮均能完成计算。 import java.awt.*; import java.awt.event.*; //需要该包中的ActionEvent 类和接口ActionListener class Myframe extends Frame implements ActionListener { TextField text1, text2, text3,text4; //定义文本框 Label lab1=new Label("第一个数据为");//定义标签 Label lab2=new Label("第二个数据为"); Label lab3=new Label("两数之和为"); Label lab4=new Label("两数之差为"); Button but1=new Button("计算"); Myframe(String s)//构造函数 { super(s); setSize(400,400); setVisible(true);//设置窗口大小和可见性 text1=new TextField(10); text2=new TextField(10); text3=new TextField(10); text4=new TextField(10); setLayout(new FlowLayout()); //设置布局 add(lab1);add(text1); add(lab2);add(text2); add(lab3);add(text3); add(lab4);add(text4); add(but1);//将控件添加到窗口 text1.addActionListener(this); //注册监视器 text2.addActionListener(this); but1.addActionListener(this); validate();//保证窗口所有元素可见 } public void actionPerformed (ActionEvent e) //实现接口中的方法,以处理事件{ long n3,n4; if (e.getSource()==text1 || e.getSource()==text2 ||e.getSource()==but1) { long n1,n2; n1=Long.parseLong(text1.getText()); n2=Long.parseLong(text2.getText()); n3=n1+n2; n4=n1-n2; text3.setText(String.valueOf(n3)); text4.setText(String.valueOf(n4)); }//获取text1和text2中的文本并将其转化为long 类型数据,并计算和和差} } public class App7_2{ public static void main(String args[]) { Myframe mr=new Myframe("求两数之和及两数之差的结果"); } } Java 复习题 第一章 1、分别用Java应用程序和Java小程序编写程序:在屏幕上输出“Hello,欢迎来到精彩的 Java世界!”。 程序:①应用程序:HelloWorld1.java ②小程序:HelloWorld.java和A.htm Java 应用程序: 《HelloWorld1.java》 public class HelloWorld1{ public static void main(String[] args){ System.out.println("Hello,欢迎来到精彩的Java世界!"); } } Java 小程序: 《HelloWorld.java》 import java.applet.Applet; import java.awt.Graphics; public class HelloWorld extends Applet{ public void paint(Graphics g){ g.drawString("Hello,欢迎来到精彩的Java世界!",2,20); } } 《A.htm》 要求:代码规范,代码风格,思路正确,功能实现 1、设计一个能随机产生100个大写英文字母的方法,在该方法中统计产生了多少元音字母,并输出这个数字。 2、编写一个矩形类Rect,包含: 两个protected属性:矩形的宽width;矩形的高height。 两个构造器方法: (1)一个带有两个参数的构造器方法,用于将width和height属性初化; (2)一个不带参数的构造器,将矩形初始化为宽和高都为10。 两个方法: (1 求矩形面积的方法area() (2 求矩形周长的方法perimeter() 4.编写一个Java源程序,在程序中建立一个含10个整型(int)元素的一维数组,对数组中的每个元素赋值,然后按下标的逆序输出。 5. 设计一个圆类(Circle),将圆的位置(圆心坐标和半径)作为属性(提供任意圆的设置),并能计算圆的面积。 Circle类必须满足以下要求: (1) 圆类Circle 的属性有: cPoint_x : int型,代表圆心横坐标。 cPoint_y : int型,代表圆心纵坐标。 cRadius: double型,代表圆的半径。 cPI: double型,最终静态变量初值为3.14,代表圆的圆周率。 cArea: double型,代表圆的面积。 (2) 圆类Circle 的方法有: Circle ( ) : 构造函数,将圆的圆心置坐标原点,半径置1。 Circle ( int x , int y, double r) : 构造函数,形参 r 为半径的初值,x为横坐标的初值,y为纵坐标的初值。 double cAreaCount() : 计算当前圆类对象的面积并赋值给Circle类的cArea属性,返回cArea的值给此方法的调用者。 String toString( ) : 把当前圆类对象的圆心坐标、半径以及面积组合成“圆心为(x, y)半径为r的圆的面积为cA”字符串形式,其中x、 y、r和cA分别为横坐标、纵坐标、半径和面积的数据。 7、猜数游戏 随机生成一个数 输入一个数 如果比随机生成的数大,显示“猜错了,比这个数小” 如果比随机生成的数小,显示“猜错了,比这个数大” 如果相等,显示“恭喜你,答对了” 8、写一个彩票程序 上机练习一 一、将Vehicle 和VehicleDriver两个文件用自己的文本编辑器重新编辑并编译和运行,掌握类和对象的定义和使用 1、V ehicle.java (注意:以下代码有几个错误的地方,需要同学自己把他们找出来并更正过来) public class Vehicle{ public float journey; public int wheelNum; public int loadNum; public int driveSpeed; /** *Vehicle 类构造函数,设定初始值 */ public Vehicle(){ journey=100.3f; wheelNum=4; loadNum=1; } /** *Vehicle类的driveAt行驶方法 */ public void driveAt(int speed){ if (speed>=60){ System.out.println("行车速度太快,容易造成事故"); //如果要求的车速太快,则机动车自动以40单位速度行驶 driveSpeed=40; } else { System.out.println("你在安全行驶速度内行驶"); driveSpeed=speed; } } } 2、V ehicleDriver.java public class VehicleDriver{ public String name; //定义司机的名字 /** *VehicleDriver 类构造函数 */ public VehicleDriver(){ name="TOM"; } /** *VehicleDriver 类对象的work方法 */ public void work(){ Vehicle v=new Vehicle(); //生成Vehicle类的对象v v.driveAt(70); //调用v对象所固有的driveAt()方法 } public static void main(String args[]){ //生成VehicleDriver类的对象vb VehicleDriver vd=new VehicleDriver(); vd.work(); //调用vd对象所固有的work()方法 【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A 类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。 【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。 【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 【练习题】构造方法 编写Java程序,模拟简单的计算器。 定义名为Number的类,其中有两个整型数据成员n1和n2,应声明为私有。编写构造方法,赋予n1和n2初始值,再为该类定义加(addition)、减(subtration)、乘(multiplication)、除(division)等公有成员方法,分别对两个成员变量执行加、减、乘、除的运算。 在main方法中创建Number类的对象,调用各个方法,并显示计算结果。 【练习题】构造方法: 编写Java程序,用于显示人的姓名和年龄。 定义一个人类(Person),该类中应该有两个私有属性,姓名(name)和年龄(age)。定义构造方法,用来初始化数据成员。再定义显示(display)方法,将姓名和年龄打印出来。 Java基础考试题 班级:__________ 姓名:___________ 日期:_____________ 一、笔试(45题,每题2分) 1) 分析下面的Java程序段,编译运行后的输出结果是()。 public class Test { public static void changeString(StringBuffer sb) { sb.append("stringbuffer2"); } public static void main(String[] args) { StringBuffer sb = new StringBuffer("stringbuffer1"); changeString(sb); System.out.println("sb = " + sb.toString()); } } A. sb = stringbuffer2stringbuffer1 B. sb = stringbuffer1 C. sb = stringbuffer2 D. sb = stringbuffer1stringbuffer2 2) 在Java中,包有多种用途,但不包含()。 A. 将类组合成较小的单元,便于使用 B. 有助于避免命名冲突 C. 有助于提高运行效率 D. 允许在更广的范围内保护类、数据和方法 3) 在Java中,如果要在字符串类型s="java" 中,得到字母'v' 出现的位置,选()语句。 A)s.matches('v'); B)s.charAt('v'); C)s.indexOf('v'); D)s.substring('v'); 4)下列代码运行后,变量 c 的值是()。 int a=15,b=10; double c=a/b; a) 1.5 b) 1.0 c) 1 d) 0 5)main 方法如下所示,该程序的运行结果是()。 public static void main(String [] args){ int i=0; System.out.print(i++); } a) 输出0 b) 输出1 c) 编译错误d) 运行时出现异常 常见的Java上机面试题 在程序员面试中,主要的考试形式分为笔试和上机编程考试两部分。笔试主要考查面试者的基础是否牢固;上机考试主要考查面试者的实际开发能力和技术技巧。 上机编程考试,要求面试者能够根据题目的要求,使用一种编程工具,编写全部代码并调试运行。这主要是考查面试者代码书写和编程的熟练程度。值得注意的是,这类面试题要求能够正确运行,往往要求面试者使用比较原始的JDK编译方式也就是使用DOS命令提示符,而不是提供Eclipse或者JBuilder等快速开发环境。本章将经常出现的上机编程题进行分类,希望能够给读者带来帮助和启示。 17.1 Java基础编程试题(1) 在上机编程类的面试题中,大部分涉及基础编程,例如算法、语法、常用的类等知识点。 面试题1 怎样截取字符串 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。 参考答案 具体代码实现如下: 1.package core_java; 2.import java.util.Scanner; 3.public class InterceptionStr { 4.static String ss; //要进行截取操作的字符串 5.static int n; //截取的字符串的字节数 6.public static void main(String[] args) { 7. System.out.println("请输入字符串:"); 8. Scanner scStr = new Scanner(System.in); //从键盘获取字符串 9. ss = scStr.next(); // 将Scanner对象中的内容以字符串的形式取出来 10. System.out.println("请输入字节数:"); 11. Scanner scByte = new Scanner(System.in); //从键盘获取字符串 12. n = scByte.nextInt(); //将Scanner对象中的内容以数值的形式取出来 Java上机实践三 实验题目1 假设字符串s1、s2、s3的定义如下: String s1 = “A String”; String s2 = “A String”; String s3 = s1; 请写出下列表达式的值: s1 == s2 s1 == s3 s1.length() s1.equals(s2) s1.equals(s3) https://www.360docs.net/doc/e33460488.html,pareTo(s2) https://www.360docs.net/doc/e33460488.html,pareTo(s3) s1.concat(s3) s1.indexOf(‘t’) https://www.360docs.net/doc/e33460488.html,stIndexOf(‘t’) 实验目的 (1)熟悉字符串类String。 (2)学习创建类String的对象。 (3)学习使用类String执行字符串操作。 实验步骤 (1)按题目的要求创建String对象s1、s2,并声明对象引用s3指向s1;(2)调用String类的相关方法,执行指定操作并输出结果。 package lab1; public class Showstr { public static void main(String[] args){ String s1 ="A String"; String s2 ="A String"; String s3 = s1; System.out.println(s1 == s2); System.out.println(s1 == s3); System.out.println(s1.length()); System.out.println(s1.equals(s2)); System.out.println(s1.equals(s3)); System.out.println(https://www.360docs.net/doc/e33460488.html,pareTo(s2)); System.out.println(https://www.360docs.net/doc/e33460488.html,pareTo(s3)); System.out.println(s1.concat(s3)); 习题1. 数据类型转换应用 【案例简介】下例说明了整型、浮点型、字符串型之间的相互转换。 【案例目的】掌握Java中两个不兼容类型能够的数据格式之间的转换。 【技术要点】高精度到低精度的数据转换时候需要进行强制转换,低精度向高精度进行转换的时候的会自动进行,字符串到其他类型的转换需要用到特定的方法。 【代码分析】 public class Conversation { public static void main(String [] args) { String str = "123"; int j; byte b; int i=257; double d = 323.142; System.out.println("\nConversion of int to byte."); //i强制转换成byte型 System.out.println("i and b "+ i + " "+b); System.out.println("\nConversion of double to int."); //d强制转换成int型 System.out.println("d and i "+ d + " "+i); //d强制转换成byte型 System.out.println("d and b "+ d + " "+b); j=Integer.parseInt(str); //str转换成int型 System.out.println("j="+j); } } 【相关知识】 数据类型转换 (1)简单数据类型中各类型数据间的优先关系和相互转换 不同类型数据间的优先关系如下 低----------------------------------------------->高 byte->short->char-> int -> long -> float -> double 自动类型转换规则 整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。 (2)强制类型转换 高级数据要转换成低级数据,需用到强制类型转换,如: int i; byte b=(byte)i; //把int型变量i强制转换为byte型 (3)其他转换 数字变为字符串 用如下方法转换相应类型的数字: Double.toString(double); Float.toString(float); 一、类和对象基础题(共13题) 1.编写一个Java应用程序,该程序中有3个类:Lader、Circle和主类A。具体要求如下:Lader类具有类型为double的上底、下底、高、面积属性,具有返回面积的功能,包括一个构造方法对上底、下底、高进行初始化。Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能,包括一个构造方法对半径进行初始化。主类A用来测试类Lader和类Circle的功能。 2.按要求编写Java应用程序: (1)编写西游记人物类(XiYouJiRenWu) 其中属性有:身高(height),名字(name),武器(weapon) 方法有:显示名字(printName),显示武器(printWeapon) (2)在主类的main方法中创建二个对象:zhuBaJie,sunWuKong。并分别为他们的两个属性(name,weapon)赋值,最后分别调用printName, printWeapon方法显示二个对象的属性值。 3.编写Java应用程序。首先定义一个描述银行账户的Account类,包括成员变量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次,编写一个主类,在主类中测试Account类的功能。 4.编写Java应用程序。首先,定义一个时钟类——Clock,它包括三个int型 成员变量分别表示时、分、秒,一个构造方法用于对三个成员变量(时、分、秒)进行初始化,还有一个成员方法show()用于显示时钟对象的时间。其次,再定义一个主类——TestClass,在主类的main方法中创建多个时钟类的对象,使用这些对象调用方法show()来显示时钟的时间。 5.编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类——TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测试Student类的功能。 6.编写一个Java应用程序,该应用程序包括2个类:Print类和主类E。Print 类里有一个方法output()功能是输出100 ~ 999之间的所有水仙花数(各位数字的立方和等于这个三位数本身,如: 371 = 33 + 73 + 13。)在主类E的main方法中来测试类Print。 7.编写Java应用程序。首先,定义一个Print类,它有一个方法void output(int Java 上机训练题 1.编写程序,输入两个整数:1500和350,求出它们的商和余数并输出。 2.编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值 给b,b中原来的值给c, c中原来的值给a,且输出改变后的a,b,c的值。 3.输入两个整型变量a,b的值,输出a+b,a-b,a*b,a/b,(float)a/b,a%b的结果, 要求连同算式一起输出,每个算式占一行。 例:a等于10,b等于5,a+b的结果输成 10+5=15 4.输入一个非负数,计算以这个数为半径的圆周长和面积。 5.输入任意一个三位数,将其各位数字反序输出(例如输入123,输出321). 6.输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输 出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if 语句) 7.求出100至300内所有百位和个位相加能被3整除的数字。 8.编程求S=1/1!+1/2!+1/3!+........+1/n!直到1/n!<=1e-6 9.编写程序实现用一元人民币换成一分、两分、五分的硬币共50枚。 10.输入1个四位数,求各位数字的平方和。 例如:输入 1234,输出30。 11.写出满足不等式1+1/2+1/3+1/4+...+1/N>15最小的N值,并输出s的值。 12.铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤0.15元计费; 如超50公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。 13.相邻两个奇数都为素数的这样一对数叫双胞胎素数,输出100到200之间的所有双胞胎素数。 14.输入一串字符以“#”结束,如果它是大写字母转换为小写字母输出,如果是小写字母转换为大写字母输出。如果不是字母,则照直输出。 15.输入一个四位数,要求将它的千位、百位、十位、个位上的数字按由小到大排列,输出一个新数。(如:输入 4287 要求输出为 2478) 16.输入两门课的成绩,如果两门成绩都在60分以上。则输出“it is pass.”只要有一门低于60分就输出“it is not pass.”如果输入的任何一门成绩不在0-100范围内则输出“it is error.”。(要求用switch语句来编程) 17.求任一数字的所有因子的组合(仅限两个因子),如:15=1*15 ,15=3*5不能出现重复。如:15=5*3,15=15*1就不用输出。 18.从键盘输入几个数,以0作为结束标志,判断其正负,并求其平方和。 J a v a面向对象编程上机 练习题 Last revision on 21 December 2020 【练习题】类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100。定义一个类,对A类的成员变量v进行猜。如果大了则提示大了,小了则提示小了。等于则提示猜测成功。【练习题】类的成员变量: 请定义一个交通工具(Vehicle)的类,其中有: 属性:速度(speed),体积(size)等等 方法:移动(move()),设置速度(setSpeed(int speed)),加速speedUp(),减速speedDown()等等. 最后在测试类Vehicle中的main()中实例化一个交通工具对象,并通过方法给它初始化speed,size的值,并且通过打印出来。另外,调用加速,减速的方法对速度进行改变。【练习题】类的成员变量与方法、构造方法 在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要。 定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second),为了保证数据的安全性,这三个成员变量应声明为私有。 为MyTime类定义构造方法,以方便创建对象时初始化成员变量。 再定义diaplay方法,用于将时间信息打印出来。 为MyTime类添加以下方法: addSecond(int sec) addMinute(int min) addHour(int hou) subSecond(int sec) subMinute(int min) subHour(int hou) 分别对时、分、秒进行加减运算。 清华大学出版社郭克华J a v a W e b程序设计上机 习题答案 Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】 Chapter2 Frame、 Please Log In New Member 5. public class Test{ public static String output=""; public static void foo(int i){ try { if(i==1){ throw new Exception(); } output +="1"; }catch(Exception e){ output+="2"; return; } finally{ output+="3"; } output+="4"; } public static void main(String args[]){ foo(0); foo(1); 24) } } what is the value of output at line 24? Answer:13423 7. class ExceptionTest{ public static void main(String args[]){ try{ methodA(); }catch(IOException e){ System.out.println("caught IOException"); }catch(Exception e){ System.out.println("caught Exception"); } } } If methodA() throws a IOException, what is the result? Answer:caught IOException 40. public class ExceptionTest{ class TestException extends Exception{} public void runT est() throws TestException{} public void test() /* point x */ { runTest(); } 二级JA V A上机试题汇编 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※第01套: 1. 基本操作(1小题,计30分) 注意:下面出现的“考生文件夹”均为%USER% 在考生文件夹中存有文件名为Java_1.java的文件,该程序是不完整的,请 在注释行“//**********Found**********”下一行语句的下划线地方填入 正确内容,然后删除下划线,请勿删除注释行或改动其他已有语句内容。 存盘时文件必须存放在考生文件夹下,不得改变原有文件的文件名。 本题的要求是: 完善Java_1.java程序,并完成两个整数的输入,两个整数为: 最后按确定键退出程序。 给定源程序: //计算两个整数的乘法 import javax.swing.JOptionPane; public class Java_1 { public static void main( String args[] ) { int x, y, result; String xVal, yVal; xVal = JOptionPane.showInputDialog( "输入第1个整数:" ); yVal = JOptionPane.showInputDialog( "输入第2个整数:" ); //*********Found******** x = Integer.parseInt( __________________ ); y = Integer.parseInt( yVal ); result = x * y; //*********Found******** JOptionPane._________________________( null, "两个数的积: " + result ); System.exit( 0 ); } } 解题思路: Java程序修改如下: 第1处:需转换成整数的字符串变量,需填入xVal 第2处:调用显示信息对话框,需填入showMessageDialog 参考源程序:c:\wexam\28990001\hlpsys\参考答案\Java_1.java 请把该程序复制到c:\wexam\28990001中,然后进行编译和执行。 2. 简单应用(1小题,计40分) 注意:下面出现的“考生文件夹”均为%USER% 在考生文件夹中存有文件名为Java_2.java的文件,该程序是不完整的,请 在注释行“//**********Found**********”下一行语句的下划线地方填入 1、Java语言有多种实现机制,下列技术属于垃圾回收机制。 A、字节编译 B、内存跟踪 C、语法检查 D、堆栈上/下溢检查 本题考查的是垃圾回收机制。 Java语言不同于C++,它可以自动跟踪内存的使用情况,释放一些不再需要使用的空间,从而保证了不会由于程序的运行而生成大量无法释放的空间,该机置被称垃圾回收机制,由于这种机制的引入,从很大程度上减轻了程序员的负担。 故本题答案为B。 2、下列特点中,是Java虚拟机执行的特点之一。 A、字节代码 B、多进程 C、静态链接 D、编译 本题考查的是Java虚拟机。 Java语言的执行模式是半编译和半解释型。Java编写好的程序首先由编译器转换为标准字节代码,然后由Java虚拟机去解释执行。字节代码也是一种二进制文件,但不能直接在操作系统上运行,它可看作虚拟机的机器码。虚拟机把字节代码程序与各操作系统和硬件分开,使Java程序独立于平台。 故本题答案为A。 3、下面不是Java中的容器。 A、Frame B、Panel C、Scrollbar D、Dialog 本题考查的是Java的容器。 容器java.awt.Container是Component的子类,一个容器可以容纳多个构件,并使他们成为一个整体。 常用的容器有Frame(窗口容器),Panel(面板容器),Applet(java小程序的容器),Dialog(对话框容器)等。 而本题选项中的Scrollbar是滚动条,它是一个构件,并不是容器。 故本题答案为C。 4、下面事件监听器在Java中无事件适配器。 A、MouseListener B、KeyListener C、ActionListener D、WindowListener 本题考查的是事件适配器。 Java语言为一些Listener接口提供了适配器(Adapter)类。可以通过继承事件所对应的Adapter类,重写需要的方法,无关方法不用实现。 java.awt.event包中定义的事件适配器类包括以下几个: 1、ComponentAdapter,构件适配器。 2、ContainerAdapter,容器适配器。 3、FocusAdapter,焦点适配器。 4、KeyAdapter,键盘适配器。 5、MouseMotionAdapter,鼠标运动适配器。 6、MouseAdapter,鼠标适配器。 7、WindowAdapter,窗口适配器。 故本题答案为C。 5、对于catch子句的排列,下列是正确的。 A、父类在先,子类在后 B、子类在先,父类在后 C、有继承关系的异常不能在同一个try程序段内 D、先有子类,其他如何排列都无关 本题考查的是异常的捕获。 在Java中提供了结构化的异常处理功能,其主要是通过try...catch语句来实现的。在Java中可以将可能产生异常的代码放入到try子句中,如果产生异常,将会执行catch子句。如果有多个异常,则应先处理父类异常,再处理子类异常,否则后面的异常处理,将得不到执行。 故本题答案为A。 6、以下表达式是不合法的。 A、String x="Hello"; int y=9; x+=y; B、String x="Hello"; int y=9; if(x==y) { } C、String x="Hello"; int y=9; x=x+y; D、String x=null; int y=(x!=null)&&(x.length()>0) ? x.length() : 0 本题考查的是表达式。 Java对"+"进行了扩展,不仅可以连接字符串,而且还能将字符串与其它类型数据进行连接,结果是字符串。 常用十题 1、九九乘法表: public class chengfa { public static void main(String[] args) { int i,j; System.out.println("9*9乘法表如下:"); for(i=1;i<=9;i++) { for(j=1;j<=i;j++) { System.out.print(+i+"*"+j+"="+i*j); System.out.print(" " ); } System.out.println( ); } } } 2、成绩判断 import java.util.Scanner; public class chengjipanduan { public static void main(String[] args) { int grade; System.out.println("输入你的成绩:"); Scanner s=new Scanner(System.in); grade=s.nextInt(); switch(grade/10) { case 10: case 9: System.out.println("你的成绩为优");break; case 8: System.out.println("你的成绩为良");break; case 7: System.out.println("你的成绩为中");break; case 6: System.out.println("你的成绩为及格");break; case 5: case 4: case 3: case 2: case 1: case 0: System.out.println("你的成绩为差");break; } } } 3、矩形类 public class Rectangle { double width=1.0; double height=1.0; public Rectangle(double width,double height) { this.width=width; this.height=height; } public void setwidth(double width) { this.width=width; } public double getwidth(double widtht) { return width; } public void setheight(double height) { this.height=height; } public double getheight(double height) { return height; } 一、基本操作题(共1题,合计18分) 41本题是判断一个字符串“Tom”是否在另外一个字符串“I am Tom,I am from China”中出现。 public class javal{ public static void main(String[]args){ ; strl="I am Tom,I am from China."; str2="Tom"; int i= ; if( ) System.out.println("\"+str2+"\"is in the string:\""+strl+"\""); else System.out.println("\""+str2+"\"is not in the string:\""+strl+"\""); } } [正确答案]第1处:String strl,str2 第2处:strl.indexOf(str2) 第3处:i!=-1 【解析】第1处使用前定义变量strl和str2;第2处和第3处判断str2是否是strl的子串。[您的答案] int i = strl.indexOf("Tom"); if(i != -1) 本题分值:18分您的得分:10分 试题解析: +我要找茬+加入错题+收藏该题评论此题 三、应用题(共1题,合计24分) 42本题要求分行打印输出当前系统中所有字体的名称。 ; public class java2 { public static void main(String[]args) { String[]fontNames=GraphicsEnvironment .getLocalGraphicsEnvironment().getAvailable- j a v a试题操作及答案 /**【程序1】 *题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 *对兔子,假如兔子都不死,问每个月的兔子总数为多少? *1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... */ public class Test1{ public static int rabit(int n) { if(n==1||n==2) { return 1; }else if(n>=3){ return (rabit(n-1))+(rabit(n-2)); } return 0; } public static void main(String[] args) { for(int i=1;i<=12;i++){ System.out.println("第"+i+"个月兔子对数为:"+rabit(i)); } } } /*【程序2】 *题目:判断101-200之间有多少个素数,并输出所有素数。 *1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数 */ public class Test2{ public static void main(String[] args){ System.out.println("101到200间的素数有: "); for(int i=101;i<=200;i++){ boolean flag=true; for(int j=2;j<=Math.sqrt(i);j++){ if(i%j==0){ flag=false; break; } } if(flag==true){ System.out.print(i+" "); } continue; } } } /*【程序3】 *题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:Java上机练习题
java上机练习题
java 上机练习题
Java面向对象编程上机-练习题汇总
Java基础笔试机试测试题(带答案)
常见的Java上机面试题
Java上机题目及答案代码
java第三章上机练习题
Java基础上机题_分类整理版汇总
java上机训练题
Java面向对象编程上机练习题
清华大学出版社郭克华JavaWeb程序设计上机习题答案
java考试练习题
二级java上机题库
全国计算机考试-二级Java-上机真题2
JAVA上机考试常出现的十道编程题
全国计算机二级java上机练习题
java试题操作及答案培训资料