100个JAVA经典例子(41 50)初学者的利器高手的宝典JAVASE
100个Java经典例子(41-50)初学者的利器高手的宝典JavaSE
1.package test41;
2.
3.import java.io.*;
4./**
5.*Title:运行系统命令
6.*Description:运行一个系统的命令,演示使用Runtime类。
7.*Filename:CmdExec.java
8.*/
9.public class CmdExec{
10./**
11.*方法说明:构造器,运行系统命令
12.*输入参数:String cmdline命令字符
13.*返回类型:
14.*/
15.public CmdExec(String cmdline){
16.try{
17.String line;
18.//运行系统命令
19.Process p=Runtime.getRuntime().exec(cmdline);
20.//使用缓存输入流获取屏幕输出。
21.BufferedReader input=
22.new BufferedReader
23.(new InputStreamReader(p.getInputStream()));
24.//读取屏幕输出
25.while((line=input.readLine())!=null){
26.System.out.println("java print:"+line);
27.}
28.//关闭输入流
29.input.close();
30.}
31.catch(Exception err){
32.err.printStackTrace();
33.}
34.}
35./**
36.*方法说明:主方法
37.*输入参数:
38.*返回类型:
39.*/
40.public static void main(String argv[]){
41.new CmdExec("myprog.bat");
42.}
43.}
[java]view plaincopyprint?
1.package test43;
2.
3.import java.io.*;
4.import https://www.360docs.net/doc/fe13701626.html,.*;
5./**
6.*Title:简单服务器客户端
7.*Description:本程序是一个简单的客户端,用来和服务器连接
8.*Filename:SampleClient.java
9.*/
10.public class SampleClient{
11.public static void main(String[]arges){
12.try{
13.//获取一个IP。null表示本机
14.InetAddress addr=InetAddress.getByName(null);
15.//打开8888端口,与服务器建立连接
16.Socket sk=new Socket(addr,8888);
17.//缓存输入
18.BufferedReader in=new BufferedReader(new InputStreamReader(sk
19..getInputStream()));
20.//缓存输出
21.PrintWriter out=new PrintWriter(new BufferedWriter(
22.new OutputStreamWriter(sk.getOutputStream())),true);
23.//向服务器发送信息
24.out.println("你好!");
25.//接收服务器信息
26.System.out.println(in.readLine());
27.}catch(Exception e){
28.System.out.println(e);
29.}
30.}
31.}
[java]view plaincopyprint?
1.package test43;
2.
3.import https://www.360docs.net/doc/fe13701626.html,.*;
4.import java.io.*;
5./**
6.*Title:简单服务器服务端
7.*Description:这是一个简单的服务器端程序
8.*Filename:SampleServer.java
9.*/
10.public class SampleServer{
11.public static void main(String[]arges){
12.try{
13.int port=8888;
14.//使用8888端口创建一个ServerSocket
15.ServerSocket mySocket=new ServerSocket(port);
16.//等待监听是否有客户端连接
17.Socket sk=mySocket.accept();
18.//输入缓存
19.BufferedReader in=new BufferedReader(new InputStreamReader(sk
20..getInputStream()));
21.//输出缓存
22.PrintWriter out=new PrintWriter(new BufferedWriter(
23.new OutputStreamWriter(sk.getOutputStream())),true);
24.//打印接收到的客户端发送过来的信息
25.System.out.println("客户端信息:"+in.readLine());
26.//向客户端回信息
27.out.println("你好,我是服务器。我使用的端口号:"+port);
28.}catch(Exception e){
29.System.out.println(e);
30.}
31.}
32.}
[java]view plaincopyprint?
1.package test44;
2.//文件名:moreServer.java
3.import java.io.*;
4.import https://www.360docs.net/doc/fe13701626.html,.*;
5./**
6.*Title:多线程服务器
7.*Description:本实例使用多线程实现多服务功能。
8.*Filename:
9.*/
10.class moreServer
11.{
12.public static void main(String[]args)throws IOException
13.{
14.System.out.println("Server starting...\n");
15.//使用8000端口提供服务
16.ServerSocket server=new ServerSocket(8000);
17.while(true)
18.{
19.//阻塞,直到有客户连接
20.Socket sk=server.accept();
21.System.out.println("Accepting Connection...\n");
22.//启动服务线程
23.new ServerThread(sk).start();
24.}
25.}
26.}
27.//使用线程,为多个客户端服务
28.class ServerThread extends Thread
29.{
30.private Socket sk;
31.
32.ServerThread(Socket sk)
33.{
34.this.sk=sk;
35.}
36.//线程运行实体
37.public void run()
38.{
39.BufferedReader in=null;
40.PrintWriter out=null;
41.try{
42.InputStreamReader isr;
43.isr=new InputStreamReader(sk.getInputStream());
44.in=new BufferedReader(isr);
45.out=new PrintWriter(
46.new BufferedWriter(
47.new OutputStreamWriter(
48.sk.getOutputStream())),true);
49.
50.while(true){
51.//接收来自客户端的请求,根据不同的命令返回不同的信息。
52.String cmd=in.readLine();
53.System.out.println(cmd);
54.if(cmd==null)
55.break;
56.cmd=cmd.toUpperCase();
57.if(cmd.startsWith("BYE")){
58.out.println("BYE");
59.break;
60.}else{
61.out.println("你好,我是服务器!");
62.}
63.}
64.}catch(IOException e)
65.{
66.System.out.println(e.toString());
67.}
68.finally
69.{
70.System.out.println("Closing Connection...\n");
71.//最后释放资源
72.try{
73.if(in!=null)
74.in.close();
75.if(out!=null)
76.out.close();
77.if(sk!=null)
78.sk.close();
79.}
80.catch(IOException e)
81.{
82.System.out.println("close err"+e);
83.}
84.}
85.}
86.}
[java]view plaincopyprint?
1.package test44;
2.
3.//文件名:SocketClient.java
4.import java.io.*;
5.import https://www.360docs.net/doc/fe13701626.html,.*;
6.
7.class SocketThreadClient extends Thread{
8.public static int count=0;
9.
10.//构造器,实现服务
11.public SocketThreadClient(InetAddress addr){
12.count++;
13.BufferedReader in=null;
14.PrintWriter out=null;
15.Socket sk=null;
16.try{
17.//使用8000端口
18.sk=new Socket(addr,8000);
19.InputStreamReader isr;
20.isr=new InputStreamReader(sk.getInputStream());
21.in=new BufferedReader(isr);
22.//建立输出
23.out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(
sk
24..getOutputStream())),true);
25.//向服务器发送请求
26.System.out.println("count:"+count);
27.out.println("Hello");
28.System.out.println(in.readLine());
29.out.println("BYE");
30.System.out.println(in.readLine());
31.
32.}catch(IOException e){
33.System.out.println(e.toString());
34.}finally{
35.out.println("END");
36.//释放资源
37.try{
38.if(in!=null)
39.in.close();
40.if(out!=null)
41.out.close();
42.if(sk!=null)
43.sk.close();
44.}catch(IOException e){
45.}
46.}
47.}
48.}
49.
50.//客户端
51.public class SocketClient{
52.@SuppressWarnings("static-access")
53.public static void main(String[]args)throws IOException,
54.InterruptedException{
55.InetAddress addr=InetAddress.getByName(null);
56.for(int i=0;i<10;i++)
57.new SocketThreadClient(addr);
58.Thread.currentThread().sleep(1000);
59.}
60.}
[java]view plaincopyprint?
1.package test45;
2.
3.import https://www.360docs.net/doc/fe13701626.html,.*;
4.import java.io.*;
5./**
6.*Title:使用SMTP发送邮件
7.*Description:本实例通过使用socket方式,根据SMTP协议发送邮件
8.*Copyright:Copyright(c)2003
9.*Filename:sendSMTPMail.java
10.*/
11.public class sendSMTPMail{
12./**
13.*方法说明:主方法
14.*输入参数:1。服务器ip;2。对方邮件地址
15.*返回类型:
16.*/
17.
18.public static void main(String[]arges){
19.if(arges.length!=2){
20.System.out.println("use java sendSMTPMail hostname|mail to");
21.return;
22.}
23.sendSMTPMail t=new sendSMTPMail();
24.t.sendMail(arges[0],arges[1]);
25.}
26./**
27.*方法说明:发送邮件
28.*输入参数:String mailServer邮件接收服务器
29.*输入参数:String recipient接收邮件的地址
30.*返回类型:
31.*/
32.public void sendMail(String mailServer,String recipient){
33.try{
34.//有Socket打开25端口
35.Socket s=new Socket(mailServer,25);
36.//缓存输入和输出
37.BufferedReader in=new BufferedReader(new InputStreamReader(s
38..getInputStream(),"8859_1"));
39.BufferedWriter out=new BufferedWriter(new OutputStreamWriter(s
40..getOutputStream(),"8859_1"));
41.//发出“HELO”命令,表示对服务器的问候
42.send(in,out,"HELO theWorld");
43.//告诉服务器我的邮件地址,有些服务器要校验这个地址
44.send(in,out,"MAIL FROM:<213@https://www.360docs.net/doc/fe13701626.html,>");
45.//使用“RCPT TO”命令告诉服务器解释邮件的邮件地址
46.send(in,out,"RCPT TO:"+recipient);
47.//发送一个“DATA”表示下面将是邮件主体
48.send(in,out,"DATA");
49.//使用Subject命令标注邮件主题
50.send(out,"Subject:这是一个测试程序!");
51.//使用“From”标注邮件的来源
52.send(out,"From:riverwind<213@https://www.360docs.net/doc/fe13701626.html,>");
53.send(out,"\n");
54.//邮件主体
55.send(out,"这是一个使用SMTP协议发送的邮件!如果打扰请删除!");
56.send(out,"\n.\n");
57.//发送“QUIT”端口邮件的通讯
58.send(in,out,"QUIT");
59.s.close();
60.}catch(Exception e){
61. e.printStackTrace();
62.}
63.}
64./**
65.*方法说明:发送信息,并接收回信
66.*输入参数:
67.*返回类型:
68.*/
69.public void send(BufferedReader in,BufferedWriter out,String s){
70.try{
71.out.write(s+"\n");
72.out.flush();
73.System.out.println(s);
74.s=in.readLine();
75.System.out.println(s);
76.}catch(Exception e){
77. e.printStackTrace();
78.}
79.}
80./**
81.*方法说明:重载方法。向socket写入信息
82.*输入参数:BufferedWriter out输出缓冲器
83.*输入参数:String s写入的信息
84.*返回类型:
85.*/
86.public void send(BufferedWriter out,String s){
87.try{
88.out.write(s+"\n");
89.out.flush();
90.System.out.println(s);
91.}
92.catch(Exception e){
93. e.printStackTrace();
94.}
95.}
96.}
[java]view plaincopyprint?
1.package test46;
2.import java.io.*;
3.import https://www.360docs.net/doc/fe13701626.html,.*;
4./**
5.*Title:SMTP协议接收邮件
6.*Description:通过Socket连接POP3服务器,使用SMTP协议接收邮件服务器中的邮件
7.*Filename:
8.*/
9.class POP3Demo
10.{
11./**
12.*方法说明:主方法,接收用户输入
13.*输入参数:
14.*返回类型:
15.*/
16.@SuppressWarnings("static-access")
17.public static void main(String[]args){
18.if(args.length!=3){
19.System.out.println("USE:java POP3Demo mailhost user password");
20.}
21.new POP3Demo().receive(args[0],args[1],args[2]);
22.}
23./**
24.*方法说明:接收邮件
25.*输入参数:String popServer服务器地址
26.*输入参数:String popUser邮箱用户名
27.*输入参数:String popPassword邮箱密码
28.*返回类型:
29.*/
30.public static void receive(String popServer,String popUser,String popPa
ssword)
31.{
32.String POP3Server=popServer;
33.int POP3Port=110;
34.Socket client=null;
35.try
36.{
37.//创建一个连接到POP3服务程序的套接字。
38.client=new Socket(POP3Server,POP3Port);
39.//创建一个BufferedReader对象,以便从套接字读取输出。
40.InputStream is=client.getInputStream();
41.BufferedReader sockin;
42.sockin=new BufferedReader(new InputStreamReader(is));
43.//创建一个PrintWriter对象,以便向套接字写入内容。
44.OutputStream os=client.getOutputStream();
45.PrintWriter sockout;
46.sockout=new PrintWriter(os,true);//true for auto-flush
47.//显示POP3握手信息。
48.System.out.println("S:"+sockin.readLine());
49.
50./*--与POP3服务器握手过程--*/
51.System.out.print("C:");
52.String cmd="user"+popUser;
53.//将用户名发送到POP3服务程序。
54.System.out.println(cmd);
55.sockout.println(cmd);
56.//读取POP3服务程序的回应消息。
57.String reply=sockin.readLine();
58.System.out.println("S:"+reply);
59.
60.System.out.print("C:");
61.cmd="pass";
62.//将密码发送到POP3服务程序。
63.System.out.println(cmd+"*********");
64.sockout.println(cmd+popPassword);
65.//读取POP3服务程序的回应消息。
66.reply=sockin.readLine();
67.System.out.println("S:"+reply);
68.
69.
70.System.out.print("C:");
71.cmd="stat";
72.//获取邮件数据。
73.System.out.println(cmd);
74.sockout.println(cmd);
75.//读取POP3服务程序的回应消息。
76.reply=sockin.readLine();
77.System.out.println("S:"+reply);
78.if(reply==null)return;
79.System.out.print("C:");
80.cmd="retr1";
81.//将接收第一丰邮件命令发送到POP3服务程序。
82.System.out.println(cmd);
83.sockout.println(cmd);
84.
85.//输入了RETR命令并且返回了成功的回应码,持续从套接字读取输出,
86.//直到遇到
87.if(cmd.toLowerCase().startsWith("retr")&&
88.reply.charAt(0)=='+')
89.do
90.{
91.reply=sockin.readLine();
92.System.out.println("S:"+reply);
93.if(reply!=null&&reply.length()>0)
94.if(reply.charAt(0)=='.')
95.break;
96.}
97.while(true);
98.cmd="quit";
99.//将命令发送到POP3服务程序。
100.System.out.print(cmd);
101.sockout.println(cmd);
102.}
103.catch(IOException e)
104.{
105.System.out.println(e.toString());
106.}
107.finally
108.{
109.try
110.{if(client!=null)
111.client.close();
112.}
113.catch(IOException e)
114.{
115.}
117.}
118.}
[java]view plaincopyprint?
1.package test47;
2.
3.import java.util.*;
4.import javax.mail.*;
5.import javax.mail.internet.*;
6.import javax.activation.*;
7.
8./**
9.*Title:使用javamail发送邮件Description:演示如何使用javamail包发送电子邮件。
这个实例可发送多附件Filename:
10.*Mail.java
11.*/
12.public class Mail{
13.
14.String to="";//收件人
15.String from="";//发件人
16.String host="";//smtp主机
17.String username="";
18.String password="";
19.String filename="";//附件文件名
20.String subject="";//邮件主题
21.String content="";//邮件正文
22.@SuppressWarnings("unchecked")
23.Vector file=new Vector();//附件文件集合
24.
25./**
26.*方法说明:默认构造器输入参数:返回类型:
27.*/
28.public Mail(){
30.
31./**
32.*方法说明:构造器,提供直接的参数传入输入参数:返回类型:
33.*/
34.public Mail(String to,String from,String smtpServer,String username,
35.String password,String subject,String content){
36.this.to=to;
37.this.from=from;
38.this.host=smtpServer;
https://www.360docs.net/doc/fe13701626.html,ername=username;
40.this.password=password;
41.this.subject=subject;
42.this.content=content;
43.}
44.
45./**
46.*方法说明:设置邮件服务器地址输入参数:String host邮件服务器地址名称返回类
型:
47.*/
48.public void setHost(String host){
49.this.host=host;
50.}
51.
52./**
53.*方法说明:设置登录服务器校验密码输入参数:返回类型:
54.*/
55.public void setPassWord(String pwd){
56.this.password=pwd;
57.}
58.
59./**
60.*方法说明:设置登录服务器校验用户输入参数:返回类型:
61.*/
62.public void setUserName(String usn){
https://www.360docs.net/doc/fe13701626.html,ername=usn;
64.}
65.
66./**
67.*方法说明:设置邮件发送目的邮箱输入参数:返回类型:
68.*/
69.public void setTo(String to){
70.this.to=to;
71.}
72.
73./**
74.*方法说明:设置邮件发送源邮箱输入参数:返回类型:
75.*/
76.public void setFrom(String from){
77.this.from=from;
78.}
79.
80./**
81.*方法说明:设置邮件主题输入参数:返回类型:
82.*/
83.public void setSubject(String subject){
84.this.subject=subject;
85.}
86.
87./**
88.*方法说明:设置邮件内容输入参数:返回类型:
89.*/
90.public void setContent(String content){
91.this.content=content;
92.}
93.
94./**
95.*方法说明:把主题转换为中文输入参数:String strText返回类型:
96.*/
97.public String transferChinese(String strText){
98.try{
99.strText=MimeUtility.encodeText(new String(strText.getBytes(),
100."GB2312"),"GB2312","B");
101.}catch(Exception e){
102. e.printStackTrace();
103.}
104.return strText;
105.}
106.
107./**
108.*方法说明:往附件组合中添加附件输入参数:返回类型:
109.*/
110.public void attachfile(String fname){
111.file.addElement(fname);
112.}
113.
114./**
115.*方法说明:发送邮件输入参数:返回类型:boolean成功为true,反之为false 116.*/
117.public boolean sendMail(){
118.
119.//构造mail session
120.Properties props=System.getProperties();
121.props.put("mail.smtp.host",host);
122.props.put("mail.smtp.auth","true");
123.Session session=Session.getDefaultInstance(props,
124.new Authenticator(){
125.public PasswordAuthentication getPasswordAuthentication() {
126.return new PasswordAuthentication(username,password) ;
127.}
128.});
129.
130.try{
131.//构造MimeMessage并设定基本的值
132.MimeMessage msg=new MimeMessage(session);
133.msg.setFrom(new InternetAddress(from));
134.InternetAddress[]address={new InternetAddress(to)}; 135.msg.setRecipients(Message.RecipientType.TO,address); 136.subject=transferChinese(subject);
137.msg.setSubject(subject);
138.
139.//构造Multipart
140.Multipart mp=new MimeMultipart();
141.
142.//向Multipart添加正文
143.MimeBodyPart mbpContent=new MimeBodyPart();
144.mbpContent.setText(content);
145.//向MimeMessage添加(Multipart代表正文)
146.mp.addBodyPart(mbpContent);
147.
148.//向Multipart添加附件
149.Enumeration efile=file.elements();
150.while(efile.hasMoreElements()){
151.
152.MimeBodyPart mbpFile=new MimeBodyPart();
153.filename=efile.nextElement().toString();
154.FileDataSource fds=new FileDataSource(filename); 155.mbpFile.setDataHandler(new DataHandler(fds)); 156.mbpFile.setFileName(fds.getName());
157.//向MimeMessage添加(Multipart代表附件)
158.mp.addBodyPart(mbpFile);
159.
160.}
161.
162.file.removeAllElements();
163.//向Multipart添加MimeMessage
164.msg.setContent(mp);
165.msg.setSentDate(new Date());
166.//发送邮件
167.Transport.send(msg);
168.
169.}catch(MessagingException mex){
170.mex.printStackTrace();
171.Exception ex=null;
172.if((ex=mex.getNextException())!=null){
173.ex.printStackTrace();
174.}
175.return false;
176.}
177.return true;
178.}
179.
180./**
181.*方法说明:主方法,用于测试输入参数:返回类型:
182.*/
183.public static void main(String[]args){
184.Mail sendmail=new Mail();
185.sendmail.setHost("https://www.360docs.net/doc/fe13701626.html,");
186.sendmail.setUserName("du_jiang");
187.sendmail.setPassWord("31415926");
188.sendmail.setTo("dujiang@https://www.360docs.net/doc/fe13701626.html,");
189.sendmail.setFrom("du_jiang@https://www.360docs.net/doc/fe13701626.html,");
190.sendmail.setSubject("你好,这是测试!");
191.sendmail.setContent("你好这是一个带多附件的测试!");
192.//Mail sendmail=new
193.//Mail("dujiang@https://www.360docs.net/doc/fe13701626.html,","du_jiang@https://www.360docs.net/doc/fe13701626.html,","https://www.360docs.net/doc/fe13701626.html,","d u_jiang","31415926","你好","胃,你好吗?");
194.sendmail.attachfile("c:\\test.txt");
195.sendmail.attachfile("DND.jar");
196.sendmail.sendMail();
197.
JAVA经典算法案例
JA V A经典算法40例 【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{ public static void main(String args[]){ int i=0; for(i=1;i<=20;i++) System.out.println(f(i)); } public static int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); } } 或 public class exp2{ public static void main(String args[]){ int i=0; math mymath = new math(); for(i=1;i<=20;i++) System.out.println(mymath.f(i)); } } class math { public int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); } } 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class exp2{ public static void main(String args[]){ int i=0; math mymath = new math(); for(i=2;i<=200;i++) if(mymath.iszhishu(i)==true) System.out.println(i); } } class math { public boolean iszhishu(int x) { for(int i=2;i<=x/2;i++) if (x % i==0 ) return false; return true; } } 【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水
java源代码经典入门案例—光环java编程培训机构
java源代码经典入门案例 class Demo { public static void main(String[] args) { System.out.println("hello E盘"); } } class Demo { public static void main(String[] args) { System.out.println("hello E盘"); } } /* 需求:练习一个hello world程序。 思路: 1,定义一个类,因为java程序都定义类中,java程序都是以类的形式存在的,类的形式其实就是一个字节码文件最终体现。 2,定义一个主函数。为了让该类可以独立运行。 3,因为演示hello world,在控制台上看到该字样,所以需要使用输出语句完成。 步骤: 1,用class关键字来完成类的定义,并起一个阅读性强的类名。 2,主函数:public static void main(String[] args)这时固定格式的。jvm认识。 3,使用输出语句:System.out.println("hello world"); 代码仅仅是思想的一种体现形式。 */ class Demo
{ //定义一个主函数,为了保证程序的独立运行。 public static void main(String[] args) { System.out.println("hello world");//这是输出语句,用于将括号中的数据打印到控制台上,ln可以在数据的结尾处换行。 } } class OperateDemo { public static void main(String[] args) { //算术运算符。+ - * / %(取余,模运算) +(连接符) // ++(自增:就在原有数据基础上+1,在赋给原有数据) -- //int x = 6370; //x = x / 1000 * 1000; //System.out.println(x); // System.out.println(5%2); // System.out.println(3+"2"); //System.out.println("5+5="+(5+5));//"5+5=5"+5 "5+5=55" //int a = 4,b = 5; //System.out.println("a="+a+",b="+b);//a=4,b=5; int a = 3,b; //a++;//a = a+1; // b = a++; b = (a++)+(++a)+(a++)+a; // 3 5 5 6 System.out.println("a="+a+",b="+b); int i = 3; i = i++;
15个经典JAVA小程序集
import java.util.Scanner; public class Example1 { public static void main(String[] args) { Scanner sc=new Scanner(System.in);//输入一个数字 int score=sc.nextInt();//将数字放入整型score中 if(score>0)//if语句进行判断 { if(score>=90) { System.out.println("你很棒!"); } else if(score>=60&&score<90) { System.out.println("你很不错!"); } else System.out.println("你得加油!"); } else System.out.println("你输入的数字不正确!"); } } import java.util.Scanner; public class Example2 { public static void main(String[] args) { Scanner sc=new Scanner(System.in);//动态输入任意两个数int a=sc.nextInt();
int b=sc.nextInt(); if(a>b)//if语句比较大小 { System.out.println("你所输入的最大值:"+a); System.out.println("你所输入的最小值:"+b); } else if(ajava经典编程题二及详细答案
2.1上机练习 ?基本题 1)编程观察如下输出语句: System.out.println("hello test escape char"); 在“escape”处换上各种转义字符测试输出效果。如何实现如下输出: Hello "test" Hello ‘\test’ 2)设有如下代码段,考虑赋值转换问题: int a=234; byte b=a; System.out.println("a=" a ",b=" b); 将a,b的类型以及数据进行各种替换,观察什么时候能赋值,什么时候需要使用强制转换,什么时候不能强制转换,什么时候强制转换会丢失数据。 3) 编写一个程序求半径R为10的圆的面积,结果保留2为有效小数。公式为:S=πR2 注:π可用Math类的常量PI表示(即Math.PI)。保留小数请查阅DecimalFormat类?提高题 1)设有一个边长为30的等边三角形,三角形内有一个内切圆,计算除内切圆外三角形内其它部分的面积。 【提示】先算三角形面积,再计算圆的面积,其差即为结果。h是等边三角形的高,内切圆的半径r=h/3,面积s=πh?/9。 2)调试分析以下程序的运行结果: public class test { public static void main(String a[]) { int m=10,n=517; System.out.println(n % m); System.out.println(n / m); System.out.println(m >> 2); System.out.println(m & n); System.out.println(Integer.toBinaryString(m)); System.out.println(Integer.toBinaryString(m >> 2)); } } 注意:Integer.toBinaryString(int)用于将一个整数转化为二进制形式的数字串。在进行位运算
Java经典编程题50道
【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下 的用C表示。 1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 【程序7】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用while语句,条件为输入的字符不为'\n'. 【程序8】 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加), 几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 【程序9】
JAVA算法100例_全源码
JA V A经典算法40题 【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{ public static void main(String args[]){ int i=0; for(i=1;i<=20;i++) System.out.println(f(i)); } public static int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); } } 或 public class exp2{ public static void main(String args[]){ int i=0; math mymath = new math(); for(i=1;i<=20;i++) System.out.println(mymath.f(i)); } } class math { public int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); } } 【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。 1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 public class exp2{ public static void main(String args[]){ int i=0; math mymath = new math(); for(i=2;i<=200;i++) if(mymath.iszhishu(i)==true) System.out.println(i); } } class math { public int f(int x) { if(x==1 || x==2) return 1; else return f(x-1)+f(x-2); } public boolean iszhishu(int x) { for(int i=2;i<=x/2;i++) if (x % 2==0 ) return false; return true;
java经典小程序,java入门100例!
1,编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年。 (2)若某个年份能被400整除,则也是闰年。 import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year<0||year>3000){ System.out.println("年份有误,程序退出!"); System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not bissextile "); } } 2,给定一个百分制的分数,输出相应的等级。 90分以上A级 80~89 B级 70~79 C级 60~69 D级 60分以下E级 import java.util.Scanner; class Mark{ public static void main(String[] args){ System.out.println("请输入一个分数"); //定义输入的分数为“mark”,且分数会有小数 double mark; Scanner scanner = new Scanner(System.in); mark = scanner.nextDouble(); //判断是否有输入错误。 if(mark<0||mark>100){
java经典案例与项目
Java学习的经典的案例收集 1:九九乘法表 /* 功能:实现九九乘法表的输出 时间:2013年7月4日 */ public class jiujiuchengfabiaoDemo { public static void main(String[] args) { for(int i=1;i<=9;i++){ for(int j=1;j<=i;j++){ System.out.print(j+"*"+i+"="+(i*j)+"\t"); } System.out.println(); } } } 结果: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 2:输出等腰三角形 public class SanJiaoDemo { public static void main(String[] args) { for(int a=1;a<=5;a++){ for(int b=1;b<=5-a;b++){ System.out.print(" "); }
Java九大示例程序
JAVA面向对象九个经典例子程序 1 Hello world例子 (1) 2 类的基本组成示例 (1) 3静态与非静态变量及方法的使用 (3) 4 类继承的例子 (3) 5类的访问修饰符 (4) 6抽象类及其实现示例 (5) 7接口及其实现 (6) 8 抽象类与接口混合编程例子 (7) 9 接口回调与多态性 (8) 1 Hello world例子 package Example; //定义自己的包名 public class Example1 //定义一个类 { public static void main(String[] args) //系统可以执行的main方法,这里是一个公有静态无返回值的方法 { System.out.println("Hello world!"); //调用https://www.360docs.net/doc/fe13701626.html,ng包中的System类的PrintLine方法输出Hello world! } } 2 类的基本组成示例 package Example; class Person { public int age; //声明公共字段age private String name; //声明私有字段name,此时name为类的属性,下面通过公有方法进行访问 public String getName() { return name;
} public void setName(String name) { https://www.360docs.net/doc/fe13701626.html, = name; } public void eat() //定义无参数的eat方法 { System.out.println("Person can eat"); } public void eat(String s) //定义带参数的eat方法,实现方法重载 { System.out.println("Person can eat"+s); } public Person() //定义无参构造函数,注意无返回值定义,方法与类同名 { } public Person(int age, String name) //重写一个带参数构造函数,注意无返回值定义,方法与类同名 { this.age = age; //前一个age为对象的字段,由this指定,后一个age为函数形参 https://www.360docs.net/doc/fe13701626.html, = name; //前一个name为对象的属性,由this指定,因为在本类中可直接访问,后一个name为函数形参 } } public class Example2 { public static void main(String[] args) { Person person1 = new Person(); //调用类的无参构造函数 person1.age = 20; //给对象的公有字段直接赋值 person1.setName("zhangsan"); //必须使用公共方法才能给对象的属性赋值 System.out.println("第一个人信息,姓名:"+person1.getName()+"年 龄:"+person1.age); person1.eat(); //调用对象的无参方法 Person person2 = new Person(18, "lisi");//调用类的有参构造函数 System.out.println("第二个人信息,姓名:"+ person2.getName() + "年龄:"+ person2.age); person2.eat(" 馒头"); //调用对象的有参方法 } }
java递归的经典例子
java递归的经典例子 1。汉诺塔 这是递归的超经典的例子,几乎每本程序设计书上谈到递归都会介绍。具体情景不再赘述。以我上述的方法观之:(1)递归的出口在于disk数为一的时候(2)向出口逼近:如果不是一,是n ,则我们先挪动上面n-1块disk,等上面挪完,即递归返回的时候,我们挪动最底下的disk。 仅仅如此,一个貌似十分复杂的问题就解决了,因为挪动那n-1块disk的时候,会继续向上减少,直到disk的数量为一为止。下面给出java程序编码(已测试过,运行正常): import javax.swing.JOptionPane; public class Hanoi { private static final String DISK_B = "diskB"; private static final String DISK_C = "diskC"; private static final String DISK_A = "diskA"; static String from=DISK_A; static String to=DISK_C; static String mid=DISK_B; public static void main(String[] args) { String input=JOptionPane.showInputDialog("please input the number of the disks you want me move."); int num=Integer.parseInt(input); move(num,from,mid,to); } private static void move(int num, String from2, String mid2, String to2) { if(num==1){ System.out.println("move disk 1 from "+from2+" to "+to2); } else { move(num-1,from2,to2,mid2); System.out.println("move disk "+num+" from "+from2+" to "+to2); move(num-1,mid2,from2,to2); } } } 2。这是一个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输出,例如:你给出的参数是"abc" 则程序会输出:
Java面向对象经典案例10个#(精选.)
1 class Anthropoid //类人猿 { private int n=100; void crySpeak(String s) { System.out.println(s); } } class People extends Anthropoid { void computer(int a,int b) { int c=a*b; System.out.println(c); } void crySpeak(String s) { System.out.println("**"+s+"**"); } } public class Monkey { public static void main(String args[]) { Anthropoid monkey=new People(); //monkey是People对象的上转型对象 //https://www.360docs.net/doc/fe13701626.html,puter(10,10); //非法 monkey.crySpeak("我喜欢这个运动"); People people=(People)monkey; //把上转型对象强制转化为子类的对象 https://www.360docs.net/doc/fe13701626.html,puter(10,10); } } 2
class ManyArea{ public double area(double radius){ return Math.PI*radius*radius; } public double area(double len,double width){ return len*width; } public double area(int len,int width){ return len*width; } public double area(double len,double width,double height){ return len*width*height; } } public class OverLoad{ public static void main(String args[]){ ManyArea ob=new ManyArea(); System.out.println("半径为3.0的圆的面积:"+ob.area(3.0)); System.out.println("长2.0、宽3.0的面积:"+ob.area(2.0,3.0)); System.out.println("长2、宽3的面积:"+ob.area(2,3)); System.out.println("立方体的面积:"+ob.area(2.0,3.0,4.0)); } } 3 class Animal { public void shout() { } } class Dog extends Animal { public void newDog() { System.out.println("Dog的新特性"); } public void shout() {
Java编程五大经典实例(初学者版)
一、实验目的: 1、掌握 Java 基本数据类型、运算符与表达式、数组和字符串的使用方法。 2、掌握各种变量的声明方式。 3、理解 Java 程序语法结构,掌握顺序结构、选择结构和循环结构语法的程序设计方法。 4、通过以上内容,掌握 Java 语言的编程规则。 5、了解Java程序文件名和类名的说明方法。 二、实验内容(或步骤)提要 1、输入一个学生的成绩,给出相应的等级(分别用if和switch语句实现)。 85分及以上为A级;70分及以上为B级; 60分及以上为C级;60分以下为D级。 【参考程序1】 public class Score{ public static void main(String args[]){ int s=Integer.parseInt(args[0]); if(s<60) System.out.println("D"); else if(s<70) System.out.println("C"); else if(s<85) System.out.println("B"); else System.out.println("A"); } } 【参考程序2】 public class Score{ public static void main(String args[]){ int s=Integer.parseInt(args[0]); int x=s/10; switch (x) { case 0: case 1: case 2: case 3: case 4:
case 5: System.out.println("D");break; case 6: System.out.println("C");break; case 7: case 8: if (s <85) { System.out.println("B"); break; } case 9: case 10: System.out.println("A"); } } } 2、输入某人的应纳税所得额,计算个人所得税。税率表如下: 级数全月应纳税所得额税率%速算扣除法(元) 1不超过500元的50 2超过500元至2000元的部分10 25 3超过2000元至5000元的部分15 125 4超过5000元至20000元的部分20 375 5 超过20000元至40000元的部分251375 6 超过40000元至60000元的部分30 3375 7 超过60000元至80000元的部分356375 8 超过80000元至100000元的部分40 10375 9 超过100000元的部分45 15375 计算公式是:应纳个人所得税税额=应纳税所得额×适用税率-速算扣除数 例:王某当月应纳税所得额6400元。则应纳个人所得税税额=6400×20%-375=905元。【参考程序】 import java.util.Scanner; public class TaxCompute {
50道经典java编程题
【程序1】TestRabbit.java 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 【程序2】FindPrimeNumber.java 题目:判断101-200之间有多少个素数,并输出所有素数。 【程序3】FindDaffodilNumber.java 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如: 153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。 【程序4】FenJie.java 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 【程序5】ConditionOperator.java 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
【程序6】GcdTest.java辗转相除法 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 【程序7】StChar.java 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 【程序8】TestAdd.java 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 【程序9】WanShu.java 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。 【程序10】TestBall.java 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
JAVA编程实例大全及详解答案(50例)
JA V A编程实例大全及详解答案(50例) 【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count);
java经典小程序模板
JA V A经典小程序1,编写程序,判断给定的某个年份是否是闰年。 闰年的判断规则如下: (1)若某个年份能被4整除但不能被100整除,则是闰年。 (2)若某个年份能被400整除,则也是闰年。 import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year<0||year>3000){ System.out.println("年份有误,程序退出!"); System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not bissextile "); } } 2,给定一个百分制的分数,输出相应的等级。 90分以上A级 80~89 B级 70~79 C级 60~69 D级 60分以下E级 import java.util.Scanner; class Mark{ public static void main(String[] args){ System.out.println("请输入一个分数"); //定义输入的分数为“mark”,且分数会有小数 double mark; Scanner scanner = new Scanner(System.in); mark = scanner.nextDouble(); //判断是否有输入错误。
java经典选择题100例及答案
1.使用Java语言编写的源程序保存时的文件扩展名是()。 (A).class (B).java (C).cpp (D).txt 2.设int a=-2,则表达式a>>>3的值为()。 (A)0 (B)3 (C)8 (D)-1 3.设有数组的定义int[] a = new int[3],则下面对数组元素的引用错误的是()。 (A)a[0]; (B)a[a.length-1]; (C)a[3]; (D)int i=1;a[i]; 4.在类的定义中可以有两个同名函数,这种现象称为函数()。 (A)封装(B)继承 (C)覆盖(D)重载 5.在类的定义中构造函数的作用是()。 (A)保护成员变量(B)读取类的成员变量 (C)描述类的特征(D)初始化成员变量 6.下面关键字中,哪一个不是用于异常处理语句()。 (A)try (B)break (C)catch (D)finally 7.类与对象的关系是()。 (A)类是对象的抽象(B)对象是类的抽象 (C)对象是类的子类(D)类是对象的具体实例 8.下面哪一个是Java中不合法的标识符()。 (A)$persons (B)twoNum (C)_myVar (D)*point 9.为AB类的一个无形式参数无返回值的方法method书写方法头,使得使用类名AB作为前缀就可以调用它,该方法头的形式为( )。 (A)static void method( ) (B)public void method( ) (C)final void method( ) (D)abstract void method( ) 10.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的()。 (A)ArrayList myList=new Object( ) (B)List myList=new ArrayList( ) (C)ArrayList myList=new List( ) (D)List myList=new List( ) 11.Java源文件和编译后的文件扩展名分别为() (A) .class和.java(B).java和.class (C).class和.class(D) .java和.java 12.在Java Applet程序用户自定义的Applet子类中,一般需要重载父类的( )方法来完成一些画图操作。 (A) start( ) (B) stop( ) (C) init( ) (D) paint( ) 13.对于一个Java源文件,import, class定义以及package正确的顺序是: (A) package,import,class(B) class,import,package (C) import,package,class(D) package,class,import 14.下面哪个是非法的: (A) int I = 32;(B) float f = 45.0; (C) double d = 45.0;(D) char c = ‘u’;//符号错 15.Java语言使用的字符码集是 (A) ASCII (B) BCD (C) DCB (D) Unicode 16. 如果一个类的成员变量只能在所在类中使用,则该成员变量必须使用的修饰是 (A) public (B) protected (C) private (D) static 17.下面关于main方法说明正确的是 (A) public main(String args[ ]) (B) public static void main(String args[ ]) (C) private static void main(String args[ ]) (D) void main() 18.哪个关键字可以对对象加互斥锁?( ) (A) transient (B) synchronized (C) serialize (D) static 19.关于抽象方法的说法正确的是( ) (A)可以有方法体(B) 可以出现在非抽象类中 (C) 是没有方法体的方法(D) 抽象类中的方法都是抽象方法 20.java.io包的File类是 (A)字符流类(B) 字节流类 (C) 对象流类(D) 非流类 21.Java application中的主类需包含main方法,以下哪项是main方法的正确形参?()A、String args B、String args[] C、Char arg D、StringBuffer args[] 22.以下代码段执行后的输出结果为() int x=-3;int y=-10; System.out.println(y%x); A、-1 B、2 C、1 D、3 23.以下关于继承的叙述正确的是()。 A、在Java中类只允许单一继承 B、在Java中一个类只能实现一个接口 C、在Java中一个类不能同时继承一个类和实现一个接口 D、在Java中接口只允许单一继承 24. 若有定义:byte[] x={11,22,33,-66}; 其中0≤k≤3,则对x数组元素错误的引用是() A)x[5-3] B)x[k] C)x[k+5] D)x[0] 25.paint()方法使用哪种类型的参数? () A、Graphics B、Graphics2D C、String D、Color 26.以下哪个不是Java的原始数据类型() A、int B、Boolean C、float D、char 27.在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为() A)隐藏 B)重写 C)重载 D)Java不支持此特性 28.以下有关构造方法的说法,正确的是:() A.一个类的构造方法可以有多个 B.构造方法在类定义时被调用 C.构造方法只能由对象中的其它方法调用。 D.构造方法可以和类同名,也可以和类名不同 29.在浏览器中执行applet 程序,以下选项中的哪个方法将被最先执行()。 A、init() B、start() C、destroy() D、stop() 30.给出下面代码,关于该程序以下哪个说法是正确的?()public class Person{ static int arr[] = new int[5]; public static void main(String a[]) { System.out.println(arr[0]);} } A、编译时将产生错误 B、编译时正确,运行时将产生错误 C、输出零 D、输出空 31、有以下方法的定义,请选择该方法的返回类型()。ReturnType method(byte x, double y) { return (short)x/y*2; } A、byte B、short C、int D、double 32.下列类定义中哪些是合法的抽象类的定义?() A、abstract Animal{abstract void growl();} B、class abstract Animal{abstract void growl();} C、abstract class Animal{abstract void growl();} D、abstract class Animal{abstract void growl(){System.out.println(“growl”);};} 33.有以下程序片段,下列哪个选项不能插入到行1。() 1. 2.public class Interesting{ 3.//do sth 4. } A、import java.awt.*; B、package mypackage; C、class OtherClass{ } D、public class MyClass{ } 34. 设有下面两个赋值语句: a = Integer.parseInt(“12”); b = Integer.valueOf(“12”).intValue(); 下述说法正确的是()。