编程从键盘输入一个整数,计算出阶乘并输出。
例如,输入 39
输出:20397882081197443358640281739902897356800000000
一看到这道题就想到当时学C语言的时候,反正是我水平有限,用C求这道题反正不会,如今在一心一意慢慢学Java,然后其实书上这个程序也有
[java] view plain copy print?
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。
此外用到了基本数据类型作为对象处理,是了解了一番
[java] view plain copy print?
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;
}