• Java私塾的一些基础练习题(一)


    写了几个,还有几个还在研究中。

    14: 将1 到1000 之间的奇数打印出来。

    public class OddNumber
    {
    	public static void main(String[] args)
    	{
    		for(int i=1;i<=100;i++)
    		{
    			if(i%2==0) continue;
    			{
    				System.out.print(i+" ");
    			}
    		}
    	}
    }
    

    15: 判断一个数能否同时被3和5 整除。

    import java.util.Scanner;
    public class Practice
    {
    	public static void main(String[] args)
    	{
    		while(true)
    		{
    			Scanner sc=new Scanner(System.in);
    			System.out.println("请输入一个数字,按回车提交!");
    			if(sc.hasNextInt())
    			{
    				int a=sc.nextInt();
    				if(a%3==0&&a%5==0)
    				{
    					System.out.println("这个数字既能被3整除又能被5整除!!");
    					break;
    				}
    				else
    				{
    					System.out.println("这个数字不能同时被3和5整除!!");
    					break;
    				}
    			}
    			else
    			{
    				System.out.println("您输入的不是数字,请重新输入!");
    			}
    		}
    	}
    }
    

    16: 输入10个数,找出最大一个数,并打印出来。

    import java.util.Scanner;
    public class Practice
    {
    	public static void main(String[] args)
    	{
    		
    		Scanner sc=new Scanner(System.in);
    	while(true)
    	{
    			System.out.println("请输入十个数字,以','分隔,按回车提交!");
    			String[] str=sc.next().split(",");
    			int[] a=new int[10];
    			if(str.length==10)
    			{
    				if(JudgeNum(str))
    				{
    					for(int i=0;i<str.length;i++)
    					{
    						a[i]=Integer.parseInt(str[i]);
    					}		
    				   System.out.println("您输入的数字中,最大数字为:"+Max(a));
    				   break;
    				}
    				else
    				{
    					System.out.println("输入字符中包含不合法的字符!请重新输入");
    					break;
    				}
    			}
    			else
    			{
    				System.out.println("输入数字个数不正确!请重新输入");
    			}
    		}
    	}
    
    	public static boolean JudgeNum(String[] s)
    	{
    		boolean temp=false;
    		for(int i=0;i<s.length;i++)
    		{
    			try
    			{
    				Integer.parseInt(s[i]);
    				temp=true;
    			}
    			catch(NumberFormatException ex)
    			{
    				temp=false;
    			}
    		}
    	return temp;
    	}
    	public static int Max(int[] x)
    		{
    			int temp=x[0];
    			for(int i=0;i<x.length;i++)
    			{
    				if(x[i]>temp)
    				{
    					temp=x[i];
    				}					
    			}
    			return temp;
    		}
    }
    

    17: 给出一百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’。90 分以上为’A’,80~89 分为’B’,70~79 分为’C’,60~69 分为’D’,60分以下为’E’。

    import java.util.Scanner;
    public class LevelDemo
    {
    	public static void main(String[] args)
    	{
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入您的分数:");
    		if(sc.hasNextInt())
    		{
    			int a=sc.nextInt();
    			if(a<60)
    			{
    				System.out.println("您输入的分数等级为:E");
    			}		
    			else if(a>=60&&a<=69)
    			{
    				System.out.println("您输入的分数等级为:D");
    			}
    			else if(a>=70&&a<=79)
    			{
    				System.out.println("您输入的分数等级为:C");
    			}
    			else if(a>=80&&a<=89)
    			{
    				System.out.println("您输入的分数等级为:B");
    			}
    			else if(a>=90)
    			{
    				System.out.println("您输入的分数等级为:A");
    			}			
    		}
    		else
    		{
    			System.out.println("输入错误,请重新输入!");
    		}
    	}
    }
    

    18: 输出图案:

    *

    **

    ***

    ****

    *

    **

    ***

    ****

    public class PrintStar
    {
    	public static void main(String[] args)
    	{
    		StringBuilder str1=new StringBuilder("");
    		StringBuilder str2=new StringBuilder("");
    		for(int i=0;i<4;i++)
    		{
    			str1.append("*");
    			System.out.println(str1);
    		}
    		for(int j=0;j<4;j++)
    		 {
    			str2.append("*");
    			System.out.println(str2);
    		}		
    	}
    }
    //这个写的太脑残了,我还得想想
    

    1:写一个MyPoint 完全封装类,其中含有私有的int类型的x 和y 属性,分别用公有的getX 和setX、getY 和setY 方法访问,定义一个toString 方法用来显示这个对象的x、y 的值,如显示(1,2),最后用main 方法测试。

    class MyPoint
    {
    	private int x;
    	private int y;
    	public MyPoint(int x,int y)
    	{
    		this.setX(x);
    		this.setY(y);		
    	}
    	public void setX(int x)
    	{
    		this.x=x;		
    	}
    	public void setY(int y)
    	{
    		this.y=y;
    	}
    	public int getX()
    	{
    		return this.x;
    	}
    	public int getY()
    	{
    		return this.y;
    	}
    	public String toString()
    	{
    		return "该点的x坐标是:"+this.getX()+",y坐标是:"+this.getY();
    	}
    	
    }
    public class PointTest
    {
    	public static void main(String[] args)
    	{
    		MyPoint mp=new MyPoint(1,2);
    		System.out.println(mp);
    		
    	}
    }
    

    2:在MyPoint 类中增加equals()、toString()方法,根据命令行参数个数测试:若不传参数,则显示(0,0);若传一个参数,则打印(此参数值,0);若传两个参数,则打印(第一个参数值,第二个参数值)。

    class MyPoint//没有equals()
    {
    	private int x;
    	private int y;
    	public MyPoint(int x,int y)
    	{
    		this.setX(x);
    		this.setY(y);		
    	}
    	public void setX(int x)
    	{
    		this.x=x;		
    	}
    	public void setY(int y)
    	{
    		this.y=y;
    	}
    	public int getX()
    	{
    		return this.x;
    	}
    	public int getY()
    	{
    		return this.y;
    	}
    	public String toString()
    	{
    		return "该点的x坐标是:"+this.getX()+",y坐标是:"+this.getY();
    	}	
    }
    public class PointTest
    {
    	public static void main(String[] args)
    	{
    		if(args.length==0)
    		{
    			MyPoint mp=new MyPoint(0,0);
    			System.out.println(mp);		
    		}	
    		else
    		{			
    			if(args.length==1)
    			{
    				if(isNum(args[0]))
    				{
    					MyPoint mp=new MyPoint(Integer.parseInt(args[0]),0);
    					System.out.println(mp);
    				}
    				else
    				{
    					System.out.println("输入不合法");
    				}
    			}
    			if(args.length==2)
    			{
    				if(isNum(args[0])&&isNum(args[1]))
    				{
    					MyPoint mp=new MyPoint(Integer.parseInt(args[0]),Integer.parseInt(args[1]));
    					System.out.println(mp);
    				}
    				else
    				{
    					System.out.println("输入不合法");
    				}
    			}	
    			if(args.length>2)
    			{
    				System.out.println("输入错误");				
    			}			
    		}	
    	}
    	public static boolean isNum(String s)
    	{
    		try
    		{
    			Integer.parseInt(s);
    			return true;
    		}
    		catch(Exception e)
    		{
    			return false;
    		}
    	}
    }
    

    3: 有一个序列,首两项为0,1,以后各项值为前两项值之和。写一个方法来实现求这个序列的和

    public class RecursionTest
    {
    	public static void main(String[] args)
    	{
    		System.out.println(sum(10));
    	}
    	public static int sum(int n)
    	{
    		int sum=0;
    		for(int i=n;i>0;i--)
    		{
    			sum+=fun1(i);
    		}	
    		return sum;
    		
    	}
    	public static int fun1(int n)
    	{
    		if(n==1)
    		{
    			return 0;
    		}
    		if(n==2)
    		{
    			return 1;
    		}
    		return fun1(n-1)+fun1(n-2);
    	}
    }
    

    递归实现:

    public class RecursionTest
    {
    	public static void main(String[] args)
    	{
    		System.out.println(sum(30));
    	}
    	public static int sum(int n)
    	{
    		if(n==1)
    		{
    			return 0;
    		}		
    		return sum(n-1)+fun1(n);
    	}
    	public static int fun1(int n)
    	{
    		if(n==1)
    		{
    			return 0;
    		}
    		if(n==2)
    		{
    			return 1;
    		}
    		return fun1(n-1)+fun1(n-2);
    	}
    }
    

    4:请编写一个方法实现如下功能:将1至7 的数字转换为星期日到星期六的字符串。

    import java.util.Scanner;
    public class MaxNum
    {
    	public static void main(String[] args)
    	{
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入0-7之间的整数:");
    		if(sc.hasNextInt())
    		{
    			int a=sc.nextInt();
    			switch(a)
    			{
    				case 1:
    					System.out.println("星期天");
    					break;
    				case 2:
    					System.out.println("星期一");
    					break;
    				case 3:
    					System.out.println("星期二");
    					break;
    				case 4:
    					System.out.println("星期三");
    					break;
    				case 5:
    					System.out.println("星期四");
    					break;
    				case 6:
    					System.out.println("星期五");
    					break;
    				case 7:
    					System.out.println("星期六");
    					break;
    				default  :
    					System.out.println("输入错误");
    					break;
    			}
    		}
    		else
    		{
    			System.out.println("输入错误,请重新输入");
    		}
    	}	
    }
    

    5:请编写一个方法实现如下功能:有任意三个整数a,b,c,请输出其中最大的

    public class MaxNum
    {
    	public static void main(String[] args)
    	{
    		int a=10;
    		int b=1;
    		int c=110;
    		System.out.println(Math.max(Math.max(a,c),b));		
    	}
    }
    

    6:请编写一个方法实现如下功能:将任意三个整数a,b,c按从小到大的顺序输出。

    import java.util.Arrays;
    public class MaxNum
    {
    	public static void main(String[] args)
    	{
    		int[] str={1000,178,-1};
    		Arrays.sort(str);		
    		for(int x:str)
    			System.out.println(x);		
    	}
    }
    

     8:请编写一个方法实现如下功能:计算1 加到n ( n>=2的整数)的总和。

    import java.util.Scanner;
    public class MaxNum
    {
    	public static void main(String[] args)
    	{
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入一个整数:");
    		int a=sc.nextInt();
    		System.out.println("从1加到"+a+"和等于:"+fun(a));
    		
    	}
    	public static long fun(long n)
    	{
    		long sum=0;
    		for(int i=0;i<=n;i++)
    		{
    			sum=sum+i;
    		}
    		return sum;
    	}
    }
    

    9:请编写一个方法实现如下功能:得到一个整数的绝对值。

    import java.util.Scanner;
    public class MaxNum
    {
    	public static void main(String[] args)
    	{
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入一个负整数:");
    		int a=sc.nextInt();
    		System.out.println(a+"绝对值等于:"+Math.abs(a));		
    	}	
    }
    

    1:创建一个构造方法重载的类,并用另一个类调用

    class Test
    {
    	private String name;
    	public Test()
    	{
    		this.name="ss";		
    	}
    	public Test(String name)
    	{
    		this.name=name;
    	}
    	public String getName()
    	{
    		return this.name;
    	}
    	
    }
    public class OverloadTest
    {
    	public static void main(String[] args)
    	{
    		Test t1=new Test();
    		System.out.println(t1.getName());
    		Test t2=new Test("张三");
    		System.out.println(t2.getName());
    	}
    }
    

    2:创建Rodent(啮齿动物):Mouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)等的一个继承分级结构。在基础类中,提供适用于所有Rodent 的方法,并在衍生类中覆盖它们,从而根据不同类型的Rodent 采取不同的行动。创建一个Rodent 数组,在其中填充不同类型的Rodent,然后调用自己的基础类方法,看看会有什么情况发生。

    abstract class Rodent
    {
    	public abstract void bite();
    }
    class Mouse extends Rodent
    {
    	public void bite()
    	{
    		System.out.println("老鼠咬!");
    	}
    }
    class Gerbil extends Rodent
    {
    	public void bite()
    	{
    		System.out.println("鼹鼠咬!");
    	}
    }
    class Hamster extends Rodent
    {
    	public void bite()
    	{
    		System.out.println("大颊鼠咬!");
    	}	
    }
    public class InheritanceTest
    {
    	public static void main(String[] args)
    	{
    		Rodent[] rd={new Mouse(),new Gerbil(),new Hamster()};
    		for(int i=0;i<rd.length;i++)
    		{
    			rd[i]. bite();
    		}
    	}	
    }
    

    3:编写MyPoint的一个子类MyXYZ,表示三维坐标点,重写toString方法用来显示这个对象的x、y、z 的值,如显示(1,2,3),最后用main方法测试

    class MyPoint
    {
    	private int x;
    	private int y;
    	public MyPoint(int x,int y)
    	{
    		this.setX(x);
    		this.setY(y);		
    	}
    	public void setX(int x)
    	{
    		this.x=x;		
    	}
    	public void setY(int y)
    	{
    		this.y=y;
    	}
    	public int getX()
    	{
    		return this.x;
    	}
    	public int getY()
    	{
    		return this.y;
    	}
    	public String toString()
    	{
    		return "该点的x坐标是:"+this.getX()+",y坐标是:"+this.getY();
    	}	
    }
    class MyXYZ extends MyPoint
    {
    	private int z;
    	public MyXYZ(int x,int y,int z)
    	{
    		super(x,y);
    		this.z=z;
    	}
    	public int getZ()
    	{
    		return this.z;
    	}
    	public String toString()
    	{
    		return "该点的x坐标是:"+this.getX()+",y坐标是:"+this.getY()+",z坐标是:"+this.getZ();
    	}	
    }
    public class ThreePointTest
    {
    	public static void main(String[] args)
    	{
    		MyPoint mp=new MyXYZ(1,9,66);
    		System.out.println(mp);
    	}
    }
    

    15:设计个Circle类,其属性为圆心点(类型为前面设计的类MyPoint)和半径,并为此类

      编写以下三个方法:

      一是计算圆面积的calArea()方法;

      二是计算周长的calLength();

      三是boolean inCircle(MyPoint mp)方法,功能是测试作为参数的某个点是否在当前对象圆内(圆内,包括圆上返回true;在圆外,返回false)

    class MyPoint
    {
    	private int x;
    	private int y;
    	public MyPoint(int x,int y)
    	{
    		this.setX(x);
    		this.setY(y);		
    	}
    	public void setX(int x)
    	{
    		this.x=x;		
    	}
    	public void setY(int y)
    	{
    		this.y=y;
    	}
    	public int getX()
    	{
    		return this.x;
    	}
    	public int getY()
    	{
    		return this.y;
    	}
    	public String toString()
    	{
    		return "该点的x坐标是:"+this.getX()+",y坐标是:"+this.getY();
    	}	
    }
    class Circle
    {
    	private MyPoint cp;
    	private double radius;
    	public Circle(MyPoint mp,double r)
    	{
    		this.cp=mp;
    		this.radius=r;
    	}
    	public double calArea()
    	{
    		return Math.PI*Math.pow(radius,2);	
    	}
    	public double calLength()
    	{
    		return Math.PI*radius*2;
    	}
    	public boolean inCircle(MyPoint mp)
    	{
    		if((Math.pow(mp.getX()-this.cp.getX(),2)+Math.pow(mp.getY()-this.cp.getY(),2))<Math.pow(radius,2))
    		{
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    	}
    }
    public class CircleTest
    {
    	public static void main(String[] args)
    	{
    		MyPoint mp=new MyPoint(-1,3);
    		Circle c=new Circle(mp,50);
    		System.out.println("圆面积为:"+Math.round(c.calArea()));
    		System.out.println("圆周长为:"+Math.round(c.calLength()));
    		MyPoint mp1=new MyPoint(1,2);
    		if(c.inCircle(mp1))
    		{
    			System.out.println("在圆内");
    		}
    		else
    		{
    			System.out.println("不在圆内");
    		}
    	}
    }
    

    1:写一个方法,在方法内部定义一个一维的int 数组,然后为这个数组赋上初始值,最后再循环取值并打印出来

    public class ArrayTest10
    {
    	public static void main(String[] args)
    	{
    			ArrayFun();
    	}
    	public static void ArrayFun()
    	{
    		int[] a={0,9,6,7,1,5,86,2,45,3,4};
    		for(int i:a)
    			System.out.print(i+" ");
    	}
    }
    

    3:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”

    public class ArrayTest10
    {
    	public static void main(String[] args)
    	{
    		String[] str={"abc","printStackTrace","default","final","finally","abstract","assert","interface","GregorianCalendar","NullPointereFormatException "};
    		if(args.length==0)
    		{
    			System.out.println("您没有输入要查找的单词");
    		}
    		else if(args.length==1)
    		{
    				StringBuffer sBu=new StringBuffer(10);
    				for(String s:str)
    					sBu.append(s);
    				if(sBu.indexOf(args[0])!=-1)
    				{
    					System.out.println("Yes");
    				}
    				else
    				{
    					System.out.println("No");
    				}
    		}
    		else
    		{
    			System.out.println("输入不合法");
    		}		
    	}	
    }
    

    5:用二重循环求出二维数组b所有元素的和:int[][] b={{11},{21,22},{31,32,33}}

    public class ArraySum
    {
    	public static void main(String[] args)
    	{
    		int[][] b={{11},{21,22},{31,32,33}};
    		int sum=0;
    		for(int i=0;i<b.length;i++)
    		{
    			for(int j=0;j<b[i].length;j++)
    			{
    				sum+=b[i][j];
    			}
    		}
    		System.out.println("此数组元素的和为:"+sum);
    	}
    }
    

    方法二:用for-each输出和

    public class ArraySum
    {
    	public static void main(String[] args)
    	{
    		int[][] b={{11},{21,22},{31,32,33}};
    		int sum=0;
    		for(int[] a:b)
    			for(int s:a)				
    				sum+=s;		
    		System.out.println("此数组元素的和为:"+sum);
    	}
    }
    

    6:编写一个方法实现将班级同学的名单存放在数组中,并利用随机数(Math.random())随机输出一位同学的姓名。

    public class RondomName
    {
    	public static void main(String[] args)
    	{
    		String[] str={"张三","李四","歌友会","也盘","听音乐","与的","同样","亚特","额头","帅哥"};
    		int i=(int)Math.round(Math.random()*10);
    		if(i<str.length&&i>=0)
    			System.out.println(str[i]);		
    	}
    }
    

    7:生成一百个随机数,放到数组中,然后排序输出。

    import java.util.Arrays;
    public class RoundmTest
    {
    	public static void main(String[] args)
    	{
    		double [] du=new double[100];
    		for(int i=0;i<100;i++)
    		{
    			du[i]=Math.random();
    		}
    		Arrays.sort(du);
    		for(double dl: du)
    			System.out.println(dl);
    	}
    }
    

     8:统计字符串中英文字母、空格、数字和其它字符的个数。

    public class StatisticsString
    {
    	public static void main(String[] args)
    	{
    		String str="ASD FAJKD SMjdsnce jglk1 6572 10 SD F%$ !#\\$_ *&^%^&LM 0 2D\"F 0AFG 15GH  R1A Sfhrh .!@#$%^&*((*&^";
    		int a=0;
    		int b=0;
    		int num=0;
    		int s=0;
    		int sp=0;
    		for(int i=0;i<str.length();i++)
    		{
    			char c=str.charAt(i);
    			if("ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(String.valueOf(c))!=-1)
    			{
    				a++;
    			}
    			if("abcdefghijklmnopqrstuvwxyz".indexOf(String.valueOf(c))!=-1)
    			{
    				b++;
    			}
    			if("0123456789".indexOf(String.valueOf(c))!=-1)
    			{
    				num++;
    			}
    			if(" ".indexOf(String.valueOf(c))!=-1)
    			{
    				s++;
    			}
    			if("~!@#$%^&*()_+|{}:>?</*\\.\"".indexOf(String.valueOf(c))!=-1)
    			{
    				sp++;
    			}
    			
    		}
    		System.out.println("大写字母有:"+a+"个");
    		System.out.println("小写字母有:"+b+"个");
    		System.out.println("数字有:"+num+"个");
    		System.out.println("空格有:"+s+"个");
    		System.out.println("特殊字符有:"+sp+"个");
    		System.out.println(str.length());
    	}
    }
    

    1:设计一个银行帐户类,具有户名,帐号,余额等属性,以及存款、取款等方法,并对此类进行测试

    class BankAccount
    {
    	private String name;
    	private String bankId;
    	private double balance;//余额
    	public BankAccount(String name,String bankId)
    	{
    		this.setName(name);
    		this.setBankId(bankId);
    		this.balance=0;
    	}
    	public String getName()
    	{
    		return this.name;
    	}
    	public String getBankId()
    	{
    		return this.bankId;
    	}
    	public double getBalance()
    	{
    		return this.balance;
    	}
    	public void pringBankAccount()
    	{
    		System.out.println("账户信息如下:\n"+"开户人姓名:"+this.getName()+" 账户编号:"+this.getBankId()+" 账户余额:"+this.getBalance());
    		System.out.println("--------------------------==========--------------------------");
    	}
    	public void getWithdrawals (double du)//取款
    	{
    		if(this.getBalance()>=du)
    		{
    			this.balance-=du;
    			System.out.println("取款金额为:"+du+",取款后余额为:"+this.getBalance()+"\n");
    		}
    		else
    		{
    			this.pringBankAccount();
    			System.out.println("余额不足,操作失败!");
    		}		
    		
    	}
    	public void setName(String name)
    	{
    		this.name=name;
    	}
    	public void setBankId(String bankId)
    	{
    		this.bankId=bankId;
    	}
    	public void setDeposit (double balance)//存款
    	{
    		this.pringBankAccount();
    		this.balance+=balance;
    		System.out.println("存款金额为:"+balance+"存款后余额为:"+this.getBalance()+"\n");
    	}
    }
    public class BankAccountTest
    {
    	public static void main(String[] args)
    	{
    		BankAccount ba=new BankAccount("张三","042041251218502510022");
    		ba.setDeposit(10000);
    		ba.getWithdrawals(199.3);
    		ba.getWithdrawals(1999999.3);
    	}
    }
    

    2:写一个方法,功能:定义一个一维的int 数组,长度为3,把任意三个整数a,b,c赋值给数组,然后将它们按从小到大的顺序输出(使用冒泡排序)

    public class SortTest
    {
    	public static void main(String[] args)
    	{
    		int[] a=new int[3];
    		for(int i=0;i<a.length;i++)
    		{
    			a[i]=(int)Math.round(Math.random()*10);
    		}
    		for(int i=1;i<a.length;i++)
    		{
    			int temp=0;
    			for(int j=0;j<a.length-i;j++)
    			{
    				if(a[j]>a[j+1])
    				{
    					temp=a[j];
    					a[j]=a[j+1];
    					a[j+1]=temp;				
    				}
    			}
    		}
    		for(int i: a)
    			System.out.print(i+" ");
    	}	
    }
    

    冒泡思路分析:

    0 1 2 3 4

    =======

    7 2 9 8 3

     

    5个数最少比较4

    第一趟: i=1 j=0,1,2,3(j<4[5-1])

     

    2 7 8 3 9

     

    第二趟: i=2 j=0,1,2(j<3[5-2])

     

    2 7 3 8 9

     

    第三趟: i=3 j=0,1(j<2[5-3])

     

    2 3 7 8 9

     

    第四趟: i=4 j=0(j<1[5-4])

     

    2 3 7 8 9

    5:已知两个对像String s1,String s2,已用ASC码排序好了,编写程序将两个String 合并,得到的结果。例如:s1="abc" s2="abc" 得s="aabbcc";结果也是排序的

    import java.util.Arrays;
    public class CombinationString
    {
    	public static void main(String[] args)
    	{
    		StringBuffer s1=new StringBuffer("aadfeghhhbc");
    		s1.append("adabce");
    		char[] ch=new char[s1.length()];
    		for(int i=0;i<ch.length;i++)
    			{
    				ch[i]=s1.charAt(i);
    			}
    		Arrays.sort(ch);
    		System.out.println(new String(ch));		
    	}	
    }
    

    1:定义一个对象“交通工具”,并定义接口,说明交通工具可以移动。继承交通工具而产生汽车、飞机、轮船,并定义类来实现其移动的方法。

    interface Move
    	{
    		public void FastMove();
    	}
    abstract class TrafficTools  implements Move
    {
    	public void FastMove()	{}
    }
    class Car  extends TrafficTools
    {
    	public void FastMove()
    	{
    		System.out.println("汽车移动");
    	}
    }
    class Plane extends TrafficTools
    {
    	public void FastMove()
    	{
    		System.out.println("飞机移动");
    	}
    }
    class Boat  extends TrafficTools
    {
    	public void FastMove()
    	{
    		System.out.println("轮船移动");
    	}
    }
    public class TrafficTest
    {
    	public static void main(String[] args)
    	{
    		TrafficTools tt1=new Car();
    		TrafficTools tt2=new Plane();
    		TrafficTools tt3=new Boat();
    		tt1.FastMove();
    		tt2.FastMove();
    		tt3.FastMove();
    	}
    }
    

    2:定义一个类来使用上面的接口

    interface Move
    	{
    		public void FastMove();
    	}
    class TrafficTools
    {
    	public void FindMove(Move m)
    	{
    		m.FastMove();
    	}
    }
    
    class Car  implements Move
    {
    	public void FastMove()
    	{
    		System.out.println("汽车移动");
    	}
    }
    class Plane implements Move
    {
    	public void FastMove()
    	{
    		System.out.println("飞机移动");
    	}
    }
    class Boat  implements Move
    {
    	public void FastMove()
    	{
    		System.out.println("轮船移动");
    	}
    }
    
    public class TrafficToolsTest
    {
    	public static void main(String[] args)
    	{
    		Move m1=new Car();
    		Move m2=new Plane();
    		Move m3=new Boat();
    		TrafficTools tt=new TrafficTools();
    		tt.FindMove(m1);
    		tt.FindMove(m2);
    		tt.FindMove(m3);
    	}
    }
    

    1:用extends 关键字创建自己的例外类;

    class MyException extends Exception
    {
    	public MyException()
    	{
    		super("抛出自定义异常");
    	}
    	
    }
    public class TestException
    {
    	public static void main(String[] args)
    	{
    		MyException me=new MyException();
    		try
    		{
    			throw me;
    		}
    		catch (Exception ex)
    		{
    			ex.printStackTrace();
    		}
    	}
    }
    

    2:用main()创建一个类,令其掷出try 块内的Exception 类的一个对象。为Exception 的构建器赋予一个字串参数。在catch从句内捕获异常,并打印出字串参数。添加一个finally从句,并打印一条消息,证明自己真正到达那里。

    class MyException extends Exception
    {
    	public MyException(String msg)
    	{
    		super(msg);
    	}
    	public void Fun() throws MyException
    	{
    		try
    		{
    			throw new MyException("异常二");
    		}
    		finally
    		{
    			System.out.println("又出异常了");
    		}			
    	}
    }
    public class TestException
    {
    	public static void main(String[] args)
    	{
    		MyException me=new MyException("出异常了!");
    		try
    		{
    			throw me;
    		}
    		catch (Exception ex)
    		{
    			System.out.println(ex);
    		}
    		finally
    		{
    			System.out.println("出不出异常我照样运行!");
    		}
    		try
    		{
    			me.Fun();
    		}
    		catch (Exception ex)
    		{
    			ex.printStackTrace();
    		}
    	}
    }
    

    4:编写应用程序,从命令行传入两个整型数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常在命令行输入不同的参数时能输出如下各种结果:

      java A

      总是被执行

      Exception in thread "main" java.lang.ArrayIndexOutofBoundsException at

      A.main(A.java:7)

      java A 1 2

      0

      总是被执行

      java A 1 3a

      java.lang.NumberFormatException: 3a

      at java.lang.Integer.parseInt(Integer.java:435)

      at java.lang.Integer.parseInt(Integer.java:476)

      at A.main(A.java:8)

      总是被执行

      java A 1 0

      java.lang.ArithmeticException: / by zero at A.main(A.java:9)

      总是被执行

    public class ExceptionCapture
    {
    	public static void main(String[] args)
    	{
    		int a=0;
    		int b=0;
    		int temp=0;
    		boolean bl=true;
    		try
    		{
    			a=Integer.parseInt(args[0]);
    			b=Integer.parseInt(args[1]);
    			temp=a/b;
    		}
    		catch(ArithmeticException ae)
    		{
    			System.out.println(ae);
    			bl=false;
    		}
    		catch(NumberFormatException nfe)
    		{
    			System.out.println(nfe);
    			bl=false;
    		}
    		catch(ArrayIndexOutOfBoundsException ai)
    		{
    			System.out.println(ai);
    			bl=false;
    		}
    		catch(Exception e)
    		{
    			e.printStackTrace();
    			bl=false;
    		}
    		finally
    		{
    			System.out.println("总是被执行!");
    		}
    		if(bl)
    			System.out.println("您输入的两个整数"+args[0]+","+args[1]+"相除的结果是:"+temp);
    	}
    }
    

    还有一些题目待我写完了一起发上来,有一些题目写了也不好,但这些题目对我巩固基础应该还是有帮助的。

  • 相关阅读:
    java Swing GUI 入门-简易货币计算器
    java Swing GUI 入门-简易加法器
    java Swing GUI 入门-文件读写器
    [转]Java图形化界面设计——布局管理器之BorderLayout
    WPF不让子窗口关闭的做法
    Tcp粘包处理+无脑处理
    HM NIS Edit + NSIS 打包客户端程序
    从0开始带你成为消息中间件实战高手(百度网盘)
    洛达1562A、1536u、杰里都有哪些区别?图片对比
    AB1562_UT软件分辨真假洛达1562A,洛达1562a怎么鉴别?
  • 原文地址:https://www.cnblogs.com/xiongyu/p/2232628.html
Copyright © 2020-2023  润新知