掌握:接口、抽象类、最终类的编程;字符串的使用。
1. 定义接口A,接口内有两个方法: method1(int x)和method2(int x,int y),它们的返回值类型均为int。请编写一个Applet,并使其实现接口A:令方法method1(int x)的功能是求5的x次方、方法method2(int x,int y) 的功能是求两参数的最大值。在paint()方法中调用这两个方法,显示method1(2)和 method2(2,8)的结果。
@程序
import java.awt.*;
import java.applet.*;
public class Applet1 extends Applet implements A
{
public void paint(Graphics g)
{
g.drawString("调用method1(2)的结果: "+method1(2),20,20);
g.drawString("调用method2(2,8)的结果: "+method2(2,8),20,40);
}
public int method1(int x)
{
int result=1;
for(int i=1;i<=x;i++)
result*=5;
return result;
}
public int method2(int x,int y)
{
return x>y?x:y;
}
}
interface A
{
public abstract int method1(int x);
public abstract int method2(int x,int y);
}
2. 定义名为VolumeArea的抽象类,在其中定义圆周率p的值为3.14159,并定义两个抽象方法volume(double r)和area(double r),它们的返回值类型均为float。再定义以类VolumeArea为父类的子类VolumeAndArea,在该子类中实现父类中的抽象方法:方法volume(double r) 的功能是求半径为r的球的体积(公式为:4pr3¸3);方法area(double r)的功能是求半径为r的圆的面积(公式为:pr2)。请编写一个Application ,在其主类中定义一个VolumeAndArea类的对象x,通过对象x求半径为r(r的值由命令行给定)的球的体积及该球最大切面的圆的面积,并输出计算结果。
@程序
public class Class1
{
static VolumeAndArea x=new VolumeAndArea( );
public static void main(String[ ] args)
{
float r=Float.valueOf(args[0]).floatValue( );
System.out.println("半径为"+r+"的球的体积="+x.volume(r));
System.out.println("半径为"+r+"的圆的面积="+ x.area(r));
}
}
abstract class VolumeArea
{
static final float myPI=3.14159f;
public abstract float volume(double r);
public abstract float area(double r);
}
class VolumeAndArea extends VolumeArea
{
public float volume(double r)
{
return (float)(4*myPI*r*r*r/3);
}
public float area(double r)
{
return (float)(myPI*r*r);
}
}
3. 定义类A,在其中定义一个final变量myPI,其类型为float,值为3.1416;类A中还定义一个final方法 m1(float r),该方法返回值类型为float,功能是求半径为r的圆的周长(公式为:2pr)。再定义类A的子类B,B为final类,其中定义一个返回值类型为void的方法 m2(float r),功能是先调用父类的方法m1( )求半径为r的圆的周长并输出计算结果,然后输出同一个圆的面积(公式为:pr2)。请编写一个Application ,利用类B计算并输出半径为5的圆的周长和面积。
@程序
public class Class1
{
static B x=new B( );
public static void main(String[ ] args)
{
x.m2(5);
}
}
class A
{
final float myPI=3.1416f;
public final float m1(float r)
{ return 2*myPI*r; }
}
final class B extends A
{
public void m2(float r)
{
System.out.println("半径为"+r+"的圆的周长="+m1(r));
System.out.println("半径为"+r+"的圆的面积="+myPI*r*r);
}
}
4.编写应用程序,功能为:从命令行传入一个包含十个字符的字符串,把该字符串与程序中给定的字符串"bacdbcabca"依次比较,统计两个串中对应字符相等的数目。然后输出命令行输入的字符串,并把两个串中对应字符不相等的字符替换为'@'后生成的新串输出,最后输出两个串中相等字符的数目。
@程序
public class Class1
{
public static void main(String args[]) throws IOException
{
if(args[0].length()<10) System.out.print("Enter a string:include 10 chars");
else
{ String str=new String("bacdbcabca");
int n=0;
System.out.print("The Standard answer:");
for (int x=0;x<str.length();x++)
System.out.print(" "+str.charAt(x));
System.out.println();
System.out.print("The Student answer:");
for (int x=0;x<str.length();x++)
{
if (args[0].charAt(x)==str.charAt(x))
{ n++; System.out.print(" "+args[0].charAt(x)); }
else System.out.print(" "+"@");
}
System.out.println( );
System.out.println("The correct answers:"+n);
}
}
}
5. 请编写一个Application实现如下功能:接受命令行中给出的一个字母串,先将该串原样输出,然后判断该串的第一个字母是否为大写,若是大写则统计该串中大写字母的个数,并将所有大写字母输出;否则输出信息串”第一个字母不是大写字母!”。
@程序
public class Class1
{
public static void main(String args[])
{
int count=0;
if(args.length!=0)
{
System.out.println(args[0]);
if((int)args[0].charAt(0)>=65 && (int)args[0].charAt(0)<=90)
{
for(int i=0;i<args[0].length( );i++)
if((int)args[0].charAt(i)>=65 && (int)args[0].charAt(i)<=90)
{ System.out.print(args[0].charAt(i)); Count++; }
System.out.println( );
System.out.println(“共有 ”+count+” 个大写字母。”);
}
else System.out.println("第一个字母不是大写字母!");
}
else System.out.println("请给出命令行参数!");
}
}