博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java私塾的一些基础练习题(一)
阅读量:4648 次
发布时间:2019-06-09

本文共 17033 字,大约阅读时间需要 56 分钟。

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

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
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

 

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

 

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

 

方法二:用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
=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
?

 

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[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

 

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/archive/2011/11/02/2232628.html

你可能感兴趣的文章
展开收起js
查看>>
第一个cocos2d-x 项目
查看>>
wpf项目中类库内新建用户控件和自定义控件的问题
查看>>
【Java并发编程】之十一:线程间通信中notify通知的遗漏
查看>>
Java子线程中的异常处理(通用)
查看>>
bzoj 3528: [Zjoi2014]星系调查
查看>>
苹果手机对应版本
查看>>
二叉树数据结构和算法
查看>>
同样版本的jstl,都是jstl1.2版本,有个有问题,另一个没有问题
查看>>
活动目录管理中常用的脚本(一)
查看>>
python 自动发邮件 Errno61 Connection refused
查看>>
go安装依赖包
查看>>
SQL 对结果集进行分组排序过滤重复数据 ROW_NUMBER
查看>>
iOS 两种易混淆的存储路径
查看>>
PHP判断文件夹是否存在和创建文件夹的方法
查看>>
Qt for Android 部署流程分析
查看>>
实现页面弹框背景虚化效果
查看>>
关于Image创建的内存管理
查看>>
15款精美的 WordPress 电子商务网站模板
查看>>
CI框架发送邮件(带附件)
查看>>