java经典程序及常见算法.docx
《java经典程序及常见算法.docx》由会员分享,可在线阅读,更多相关《java经典程序及常见算法.docx(30页珍藏版)》请在冰豆网上搜索。
java经典程序及常见算法
if((year%4==0&&year%100!
=0)||(year%400==0))
System.out.println(year+"年是闰年。
");
else
System.out.println(year+"年不是闰年。
");
}
----
classCircle{//定义父类--园类
privatedoubleradius;//成员变量--园半径
Circle(){//构造方法
radius=0.0;
}
Circle(doubler){//构造方法
radius=r;
}
doublegetPerimeter(){//成员方法--求园周长
return2*Math.PI*radius;
}
doublegetArea(){//成员方法--求园面积
returnMath.PI*radius*radius;
}
voiddisp(){//成员方法--显示园半径、周长、面积
System.out.println("园半径="+radius);
System.out.println("园周长="+getPerimeter());
System.out.println("园面积="+getArea());
}
}
classCylinderextendsCircle{//定义子类--圆柱类
privatedoublehight;//成员变量--园柱高
Cylinder(doubler,doubleh){//构造方法
super(r);
hight=h;
}
publicdoublegetVol(){//成员方法--求园柱体积
returngetArea()*hight;
}
publicvoiddispVol(){//成员方法--显示园柱体积
System.out.println("圆柱体积="+getVol());
}
}
publicclassTestCylinder{//定义主类
publicstaticvoidmain(String[]args){//主程入口
CircleCi=newCircle(10.0);//生成园类实例
Ci.disp();//调用园类的方法
CylinderCyl=newCylinder(5.0,10.0);//生成圆柱类实例
Cyl.disp();//调用父类方法
Cyl.dispVol();//调用子类方法
}
}
------
BufferedReaderstrin=newBufferedReader(newInputStreamReader(System.in));
----------
FileInputStreamfileIn=newFileInputStream("e:
/myjava/Hello.java");
intbytes=fileIn.read(buf,0,2056);
Stringstr=newString(buf,0,bytes);
System.out.println(str);
----------------------------------------
publicclassIODemo{
publicstaticvoidmain(Stringargs[]){
intdata[]={100,101,102,103,104,105};
intt;
try
{DataOutputStreamout=newDataOutputStream(newFileOutputStream(“dest.txt”));
for(inti=0;iout.WriteInt(data[i]);
out.close();
DataInputStreamin=newDataInputStream(newFileInputStream(“dest.txt”));
for(inti=data.length-1;i>=0;i--){
t=in.readInt(data[i]);
System.out.print(“”+t);
}
System.out.println();
in.close();
}catch(IOExceptione)
{System.out.println(e.getMessage());}
}
}
-----------------------------------------------------------
importjava.awt.Color;
importjava.awt.Graphics;
importjavax.swing.JApplet;
publicclassMoveMessageextendsJAppletimplementsRunnable{
Stringstr;
inttime;
privateThreadthread;
publicvoidinit(){
setBackground(Color.PINK);
str=getParameter("message");
StringtimeArg=getParameter("time");
time=Integer.parseInt(timeArg);;
thread=newThread(this);
}
publicvoidstart(){
thread.start();
}
publicvoidrun(){
intx=0;
Graphicsg=getGraphics();
while(true){
try{
Thread.sleep(time);
}catch(Exceptione){
e.printStackTrace();
}
g.clearRect(0,0,getWidth(),getHeight());
g.drawString(str,x,30);
x+=2;
if(x>=getWidth())
x=0;
}
}
}
-------------------------
编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次。
(p202,例8-1)
//programmenameTestThread;
//声明一个子线程类Threaddemo;
classThreadDemoextendsThread{
publicThreadDemo(Stringstr){
super(str);
}
publicvoidrun(){
for(inti=0;i<20;i++){
System.out.print(“”+this.getName());
Try{
Sleep(300);
}catch(InterruptedExceptione){
System.out.println(e.getMessage());
Return;
}
}
System.out.println(“/end”);
}
}
publicclassTestThread{
publicstaticvoidmain(Stringargs[]){
ThreadDemothread1=newThreadDemo(“T1”);
ThreadDemothread2=newThreadDemo(“T2”);
ThreadDemothread3=newThreadDemo(“T3”);
thread1.start();
thread2.start();
thread3.start();
}
}
---------------
11.利用线程方法编写JApplet程序,实现在浏览器端实时动态显示本地系统时钟
//ProgrammeNameWatch.java
importjava.applet.Applet;
importjava.awt.*;
importjava.text.DateFormat;
importjava.util.*;
publicclassWatchextendsApplet{
publicvoidpaint(Graphicsg){
Dated=newDate();
DateFormatldf=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
//System.out.println("现在系统时间是(long):
"+ldf.format(d));
Stringtime=ldf.format(d).toString();
g.drawString(time,100,100);
try{
Thread.sleep(1000);
}catch(InterruptedExceptione){}
repaint();
}
}
JavaAppletDemo
//保存为Watch.html文件
----------
Scanners=newScanner(System.in);
System.out.println("请输入一个字符串:
");
Stringstr=s.nextLine();
int n =s.nextInt();
--
输入两个正整数m和n,求其最大公约数和最小公倍数。
/**在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最大公约数,最小公倍数为两数之积除以最大公约数。
*
importjava.util.*;
public class lianxi06 {
publicstaticvoidmain(String[]args){
int a,b,m;
Scanners=newScanner(System.in);
System.out.print("键入一个整数:
");
a=s.nextInt();
System.out.print("再键入一个整数:
");
b=s.nextInt();
deffcd=newdeff();
m=cd.deff(a,b);
intn=a*b/m;
System.out.println("最大公约数:
"+m);
System.out.println("最小公倍数:
"+n);
}
}
classdeff{
publicintdeff(intx,inty){
intt;
if(x t=x;
x=y;
y=t;
}
while(y!
=0){
if(x==y)returnx;
else{
intk=x%y;
x=y;
y=k;
}
}
returnx;
}
}
----------------
importjava.util.*;
publicclasslianxi07{
publicstaticvoidmain(String[]args){
intdigital=0;
intcharacter=0;
intother=0;
intblank=0;
char[]ch=null;
Scannersc=newScanner(System.in);
Strings=sc.nextLine();
ch=s.toCharArray();
for(inti=0;i if(ch>='0'&&ch<='9'){
digital++;
}elseif((ch>='a'&&ch<='z')||ch>'A'&&ch<='Z'){
character++;
}elseif(ch==''){
blank++;
}else{
other++;
}
}
System.out.println("数字个数:
"+digital);
System.out.println("英文字母个数:
"+character);
System.out.println("空格个数:
"+blank);
System.out.println("其他字符个数:
"+other);
---
intcount=0;
for(intx=1;x<5;x++){
for(inty=1;y<5;y++){
for(intz=1;z<5;z++){
if(x!
=y&&y!
=z&&x!
=z){
count++;
System.out.println(x*100+y*10+z);
}
}
}
}
System.out.println("共有"+count+"个三位数");
-----
if((year%400==0)||(year%4==0&&year%100!
=0)){
days=29;
---
题目:
两个乒乓球队进行比赛,各出三人。
甲队为a,b,c三人,乙队为x,y,z三人。
已抽签决定比赛名单。
有人向队员打听比赛的名单。
a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
publicclasslianxi18{
staticchar[]m={'a','b','c'};
staticchar[]n={'x','y','z'};
publicstaticvoidmain(String[]args){
for(inti=0;i for(intj=0;j if(m[i]=='a'&&n[j]=='x'){
continue;
}elseif(m[i]=='a'&&n[j]=='y'){
continue;
}elseif((m[i]=='c'&&n[j]=='x')
||(m[i]=='c'&&n[j]=='z')){
continue;
}elseif((m[i]=='b'&&n[j]=='z')
||(m[i]=='b'&&n[j]=='y')){
continue;
}else
System.out.println(m[i]+"vs"+n[j]);
}
}
}
}
-------
后一项与前一项的联系
------publicstaticvoidmain(String[]args){
Scanners=newScanner(System.in);
System.out.print("请输入一个正整数:
");
longa=s.nextLong();
Stringss=Long.toString(a);
char[]ch=ss.toCharArray();
intj=ch.length;
System.out.println(a+"是一个"+j+"位数。
");
System.out.print("按逆序输出是:
");
for(inti=j-1;i>=0;i--){
System.out.print(ch[i]);
}
}
}
----importjava.util.*;
publicclasslianxi25a{
publicstaticvoidmain(String[]args){
Scanners=newScanner(System.in);
booleanis=true;
System.out.print("请输入一个正整数:
");
longa=s.nextLong();
Stringss=Long.toString(a);
char[]ch=ss.toCharArray();
intj=ch.length;
for(inti=0;i if(ch[i]!
=ch[j-i-1]){is=false;}
}
if(is==true){System.out.println("这是一个回文数");}
else{System.out.println("这不是一个回文数");}
}
}
----
-----------------------------------------------------------
publicclassyueli{
staticvoidreverse(int[]array,intbegin,intend)
{
inttemp;
for(inti=0;i<=(end-begin)/2;i++){
temp=array[begin+i];
array[begin+i]=array[end-i];
array[end-i]=temp;
}
}
publicstaticvoidmain(String[]args){
int[]arr=newint[]{1,2,3,4,5,6,7,8};
newyueli().reverse(arr,1,4);
for(inti=0;i}
}
--------------------------------------
publicclassshunxun{
publicstaticvoidmain(String[]args){
String[]arr={"张三","李四","王五","赵六"};
Stringtemp="李四";
for(inti=0;iif(temp.equals(arr[i])){
System.out.println(temp+"在arr集合中");
return;
}
}
System.out.println(temp+"不在arr集合中");
}
}
-----------------------------------------------
publicclassCalendarextendsJFrame{
privateJPanelcontentPane;
privateJTabletable;
/**
*Launchtheapplication.
*/
publicstaticvoidmain(String[]args){
EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
try{
Calendarframe=newCalendar();
frame.setVisible(true);
}catch(Exceptione){
e.printStackTrace();
}
}
});
}
publicstaticString[][]setDate(){
Stringday[][]=newString[6][7];
Datedate=newDate();
//锟斤拷取锟斤拷前锟铰的碉拷一锟斤拷
date.setDate
(1);
intfirstDay=date.getDay();
//锟斤拷取锟斤拷前锟铰碉拷锟斤拷锟揭伙拷锟�
DatenewDate=newDate(date.getYear()+1900,date.getMonth()+1,0);
intlastDay=newDate.getDate();
int