6-1 是否偶数 (10分)
本题要求实现一个函数,判盘输入的整数是否是偶数,如果是偶数,返回true,否则返回false。
public static boolean isOdd(int data)
{
if(data % 2== 0)
return true;
else
return false;
}
6-2 设计一个矩形类Rectangle (10分)
设计一个名为Rectangle的类表示矩形。这个类包括: 两个名为width和height的double型数据域,它们分别表示矩形的宽和高。width和height的默认值都为1. 一个无参构造方法。 一个为width和height指定值的矩形构造方法。 一个名为getArea()的方法返回这个矩形的面积。 一个名为getPerimeter()的方法返回这个矩形的周长。
class Rectangle{
double width;
double height;
Rectangle()
{
width=-1;
height=-1;
}
Rectangle(double w , double h){
width=w;
height=h;
}
double getArea()
{
return width*height;
}
double getPerimeter()
{
return (width+height)*2;
}
}
6-3 根据派生类写出基类(Java) (10分)
裁判测试程序样例中展示的是一段定义基类People、派生类Student以及测试两个类的相关Java代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。
public People(){
}
public People(String id,String name){
this.id = id;
this.name = name;
}
public void setId(String id){
//JavaBean写法:对每个属性都具有响应的get方法和set方法
this.id = id;
}
public String getId(){
return this.id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name ;
}
public void say(){
System.out.println("I'm a person! My name is " + this.name +".");
}
6-4 写出派生类构造方法(Java) (10分)
裁判测试程序样例中展示的是一段定义基类People、派生类Student以及测试两个类的相关Java代码,其中缺失了部分代码,请补充完整,以保证测试程序正常运行。
super(id, name);
this.sid = sid;
this.score = score;
6-5 重写父类方法equals (10分)
在类Student中重写Object类的equals方法。使Student对象学号(id)相同时判定为同一对象。
public boolean equals(Object obj) {
if(this ==obj) {
return true;
}
if(obj instanceof Student){
Student p = (Student)obj;
return this.id == p.id;
}
else return false;
}
6-6 从抽象类shape类扩展出一个圆形类Circle (10分)
请从下列的抽象类shape类扩展出一个圆形类Circle,这个类圆形的半径radius作为私有成员,类中应包含初始化半径的构造方法。
class Circle extends shape {
private double radius;
public Circle(double r) {
radius=r;
}
public double getArea() {
return Math.PI*radius*radius;
}
public double getPerimeter() {
return Math.PI*2*radius;
}
}
6-7 创建一个直角三角形类实现IShape接口 (10分)
创建一个直角三角形类(regular triangle)RTriangle类,实现下列接口IShape。两条直角边长作为RTriangle类的私有成员,类中包含参数为直角边的构造方法。
class RTriangle implements IShape{
private double a;
private double b;
public RTriangle(double a, double b) {
super();
this.a = a;
this.b = b;
}
@Override
public double getArea() {
// TODO Auto-generated method stub
return this.a * this.b / 2.0;
}
@Override
public double getPerimeter() {
// TODO Auto-generated method stub
return this.a + this.b + Math.sqrt(this.a * this.a + this.b * this.b) ;
}
}
6-8 jmu-Java-06异常-多种类型异常的捕获 (3分)
如果try块中的代码有可能抛出多种异常,且这些异常之间可能存在继承关系,那么在捕获异常的时候需要注意捕获顺序。
补全下列代码,使得程序正常运行。
catch(Exception e){
if (choice.equals("number"))
System.out.println ("number format exception");
if (choice.equals("illegal"))
System.out.println ("illegal argument exception");
if (choice.equals("except"))
System.out.println ("other exception");
System.out.println (e);
}
6-9 jmu-Java-03面向对象基础-Object (10分)
输入整数n,创建n个对象,放入同一个数组中。
如果输入c,则new Computer(); //注意:Computer是系统中已有的类,无需自己编写
如果输入d,则根据随后的输入创建Double类型对象。
如果输入i,则根据随后的输入创建Integer类型对象。
如果输入s,则根据随后的输入创建String类型对象。
如果不是以上这些输入,则不创建对象,而是将null存入数组相应位置。
最后倒序输出数组中的所有对象,如果数组中相应位置的元素为null则不输出。
int n = sc.nextInt();
Object [] o = new Object[n];
for( int i = 0; i < n; i ++ ){
String str = sc.next();
switch( str ){
case "c":
o[i] = new Computer();
break;
case "d":
o[i] = new Double(sc.nextDouble());
break;
case "i":
o[i] = new Integer(sc.nextInt());
break;
case "s":
o[i] = new String(sc.next());
break;
default:
o[i] = null;
}
}
for( int i = n - 1; i >= 0; -- i ){
if( o[i] != null ){
System.out.println(o[i]);
}
}
6-10 人口统计 (10分)
本题运行时要求键盘输入10个人员的信息(每一个人信息包括:姓名,性别,年龄,民族),要求同学实现一个函数,统计民族是“汉族”的人数。
public static int numofHan(String data[]){
String s = "汉族";
int num = 0;
for(String s_t: data){
if( s_t.indexOf(s) >= 0 ){
num ++;
}
}
return num;
}
6-11 jmu-Java-05集合-List中指定元素的删除 (15分)
编写以下两个函数
/以空格(单个或多个)为分隔符,将line中的元素抽取出来,放入一个List/
public static List convertStringToList(String line)
/在list中移除掉与str内容相同的元素/
public static void remove(List list, String str)
public static List<String> convertStringToList(String line) {
String s[]=line.split(" ");
List<String> list=new ArrayList<String>();
for(int i=0;i<s.length;i++) {
if(s[i].length()>=1)list.add(s[i]);
}
return list;
}
public static void remove(List<String> list, String str) {
for(int i=0;i<list.size();i++) {
if(list.get(i).equals(str)) {
list.remove(i);
i--;
}
}
}
6-12 jmu-Java-07多线程-Thread (3分)
编写MyThread类继承自Thread。创建MyThread类对象时可指定循环次数n。
功能:输出从0到n-1的整数。 并在最后使用System.out.println(Thread.currentThread().getName()+" "+isAlive())打印标识信息
class MyThread extends Thread{
int n;
public MyThread(int a) {
n = a;
}
@Override
public void run() {
for(int i=0;i<n;i++) {
System.out.println(i);
}
System.out.println(Thread.currentThread().getName()+" "+isAlive());
}
}
6-13 jmu-Java-07多线程-PrintTask (5分)
编写PrintTask类实现Runnable接口。
功能:输出从0到n-1的整数(n在创建PrintTask对象的时候指定)。并在最后使用System.out.println(Thread.currentThread().getName());输出标识信息。
class PrintTask implements Runnable
{
private int n;
public PrintTask(int n)
{
this.n=n;
}
public void run()
{
for(int i=0;i<n;i++)
{
System.out.println(i);
}
System.out.println(Thread.currentThread().getName());
}
}
7-1 求最大值 (10分)
本题目要求读入2个整数A和B,然后输出两个数的最大值。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int a,b;
a = sc.nextInt();
b = sc.nextInt();
if(a>b){
System.out.println(a);
}
else{
System.out.println(b);
}
sc.close();
}
}
7-2 编程题:统计符合条件元素的个数-hebust (8分)
统计1…n的闭区间中,能够被3整除元素的奇数和偶数的个数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int a = 0,b = 0;
for (int i = 1; i <= n; i++) {
if (i % 3 == 0 && i % 2 == 0){
b++;
}
if (i % 3 == 0 && i % 2 != 0){
a++;
}
}
System.out.println(a+","+b);
}
}
7-3 编程题:判断闰年-hebust (10分)
根据输入的正整数y所代表的年份,计算输出该年份是否为闰年 闰年的判断标准:
能够被4整除且不能被100整除的年份
或者能够被400整除的年份
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int y = in.nextInt();
if(((y%4==0)&&(y%100!=0))||(y%400==0)){
System.out.println("yes");
}
else
System.out.println("no");
}
}
7-4 给出一个月的总天数 (20分)
编写程序,提示用户输入月份和年份,然后显示这个月的天数。
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner reader = new Scanner(System.in);
int i,j;
i = reader.nextInt();
j = reader.nextInt();
switch(i){
case 1:
System.out.println("31");
break;
case 2:
if((j%4==0&&j%100!=0)||j%400==0)
{
System.out.println("29");
}
else
{
System.out.println("28");
}
break;
case 3:
System.out.println("31");
break;
case 4:
System.out.println("30");
break;
case 5:
System.out.println("31");
break;
case 6:
System.out.println("30");
break;
case 7:
System.out.println("31");
break;
case 8:
System.out.println("31");
break;
case 9:
System.out.println("30");
break;
case 10:
System.out.println("31");
break;
case 11:
System.out.println("30");
break;
case 12:
System.out.println("31");
break;
default:
break;
}
reader.close();
}
}
7-5 根据和找到最大乘积 (10分)
试求和为N,积为最大的两个整数数分别是多少。
从键盘中输入一个整数,它是另外两个整数(不同时为0)的加法运算和,这样的两个整数的组合有很多种,请找出乘积最
大的一组数据。请注意输出两个整数以空格分割,按由小到大的顺序输出。
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
Scanner reader = new Scanner(System.in);
int i;
i = reader.nextInt();
if(i%2==0&&i!=0) {
System.out.println(i/2+" "+i/2);
System.out.println();
}
else {
if(i<0) {
System.out.print((i/2-1)+" "+i/2 );
}
else {
if(i==0) {
System.out.print("-1 1");
}
else {
System.out.print(i/2+" "+(i/2+1));
}
}
}
reader.close();
}
}
7-6 统计正数和负数的个数然后计算这些数的平均值 (15分)
编写程序,输入未指定个数的整数,判断读入的正数有多少个,读入的负数有多少个,然后计算这些输入值得总和及平均值(不对0计数)。当输入为0时,表明程序结束。将平均值以double型数据显示。
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int positiveNum = 0;
int negativeNum = 0;
int sum = 0;
while (true){
int x = input.nextInt();
if (x==0)
break;
if(x>0)
positiveNum++;
else
negativeNum++;
sum += x;
}
if (positiveNum + negativeNum !=0){
System.out.println