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);
	}
}

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

原文地址:https://www.cnblogs.com/xiongyu/p/2232628.html