三道期中考试题总结

编程从键盘输入一个整数,计算出阶乘并输出。

例如,输入 39

输出:20397882081197443358640281739902897356800000000

一看到这道题就想到当时学C语言的时候,反正是我水平有限,用C求这道题反正不会,如今在一心一意慢慢学java,然后其实书上这个程序也有

import java.math.*;

public class LargeFactorial {

	public static void main(String[] args) {
		System.out.println("58! is : "+factorial(58));
		
	}

	public static BigInteger factorial(long i) {
		BigInteger result=BigInteger.ONE;
		for (int n=1;n<=i;n++)
			result=result.multiply(new BigInteger(n+""));
		return result;
	}

}

如今你需要知道用什么数据类型和什么功能就好了,BigInteger和multiply在这里起到决定行作用


(求几何形状的面积之和)编写一个方法,求数组中所有几何形状对象的面积之和。方法签名如下:

public static double sumArea(shape[] a)

编写测试程序,继承抽象类shape得到圆形类Circle和矩形类Rectangle。

abstract class shape {// 抽象类

  /* 抽象方法 求面积 */

  public abstract double getArea();

  /* 抽象方法 求周长 */

  public abstract double getPerimeter();

}

创建四个对象(两个圆和两个矩形)的数组,然后使用sumArea方法求出它们的总面积。(保留4位小数)

第二题是抽象类一个简单的应用,我们课程是下周学习到抽象类和接口,我自己已经了解认知了。鉴于这题简单,就不放代码了


(找出最大的对象)编写一个方法,返回对象数组中最大的对象。方法签名如下:

public static Object max(Comparable[] a)

所有对象都是Comparable接口的实例。对象在数组中的顺序是由compareTo方法决定的。

编写测试程序,从键盘输入5个字符串和5个整数,创建一个由5个字符串构成的数组、一个由5个整数构成的数组。找出数组中最大的字符串、整数并输出。

输入
Xi'an (输入5个字符串,每行一个)
Beijing
ShangHai
GuangZhou
ShenZhen
8 9 12 7 6 (输入5个整数,以空格分隔)
输出
Max string is Xi'an (输出最大的字符串)
Max integer is 12 (输出最大的整数)

这道题是用了些时间,因为自己还没学到这里,所以边看书边写了,然后还用到了instanceof 

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
 用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

此外用到了基本数据类型作为对象处理,是了解了一番

import java.util.Scanner;
import java.lang.Comparable;

public class TheBiggest {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		String[] name=new String[5];
		Integer[] num=new Integer[5];
		for(int i=0;i<5;i++)
			name[i]=input.nextLine();
		for(int j=0;j<5;j++)
			num[j]=input.nextInt();
		
		System.out.println("Max string is "+max(name));
		System.out.println("Max num is "+max(num));

	}

	public static Object max(Comparable[] zy) {
		Comparable max = null;
		
		if (zy[0] instanceof String)
		{
			max=(String) zy[0];
			for (int i=1;i<zy.length;i++)
				if (max.compareTo((String) zy[i])<0)
					max=(String) zy[i];
		}
		else if	(zy[0] instanceof Integer)
		{
			max=(int) zy[0];
			for (int j=1;j<zy.length;j++)
				if ((int)max<(int) zy[j])
					max=(int) zy[j];		
		}
		return max;
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值