JAVA经典60套例子
- 格式:pdf
- 大小:363.97 KB
- 文档页数:39


第1章变幻多姿的图表图表简洁直观,在各种场合得到广泛应用,给人以很强的视觉冲击,经常让人难以忘怀。
我们的程序中如果能够灵活地应用图表,一定能给我们的程序增色不少。
本章将带你进入变换多姿的图表世界,体会图表编程带来的乐趣。
1.1 金字塔图案1.问题描述打印出金字塔图案,如图1.1所示。
2.问题分析这个问题是一个很经典的循环应用的题目。
我们都知道,打印输出的时候,都是从最左端输出,而这里,第一个星号是在中间。
这实际是因为星号之前有很多空格。
当我们使用问号来表示空格,实际的输出效果应该是图1.2的形式。
图1.1 金字塔图1.2 金字塔的分析图从图1.2分析,我们就可以发现这个题目的奥秘了。
(1)确定程序框架从图1.2中,我们可以发现,一共需要打印5行,而每一行都是打印几个空格,然后再打印几个星号。
这样我们就可以写出程序框架了。
程序框架代码如下:public class Ch1_1{public static void main(String[] args){**************for(i=1;i<=5;i++) //循环5次,打印5行{Java趣味编程100例·2·//打印若干个空格//打印若干个星号}}}由于我们这里明确知道打印的行数,所以我们使用for循环来实现。
下面我们就需要考虑如何打印每行的星号。
(2)寻找空格和星号的规律从图1.2中,我们可以发现:第1行的空格为4个,第2行是3个,第3行是2个,……,每行依次递减,直至最后一行空格数为0;而星号数目是第1行是1个,第2行是3,第3行是5,……,每行依次递增2,直至最后一行星号数为9。
总结数据,我们可以得到表1.1所示的规律。
表1.1 空格和星号的规律从表1.1中,我们不难发现行数和空格数、星号数之间有一种很有趣的联系。
根据这个联系,我们就可以考虑完善我们上面的程序了。
(3)打印空格数由于每行空格数有着“5–行数”的规律。
(1)列出目录下的文件import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.*;//列出目录下的文件public class ListFileDemo extends JFrame{JTextField jtfPath; //路径输入文本域JTextArea jtfShow; //显示目录下的内容public ListFileDemo(){super("列出目录下的文件");Container container=getContentPane(); //得到容器jtfPath=new JTextField(16); //实例化路径输入文本框JButton jbGo=new JButton("转到"); //实例化"转到"按钮jtfShow=new JTextArea(); //实例化显示内容文本框jtfPath.addActionListener(new ShowDirListener()); //增加事件处理jbGo.addActionListener(new ShowDirListener());JPanel panel=new JPanel(); //实例化面板,用于增加路径输入和按钮panel.add(jtfPath);panel.add(jbGo);container.add(panel,BorderLayout.NORTH); //增加组件到容器JScrollPane jsp=new JScrollPane(jtfShow);jsp.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); //设置边界container.add(jsp,BorderLayout.CENTER);setSize(300,200); //设置窗口尺寸setVisible(true); //设置窗口可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}class ShowDirListener implements ActionListener { //取得目录内容的事件处理public void actionPerformed(ActionEvent event) {showDirContent(jtfPath.getText()); //调用显示目录内容方}public void showDirContent(String path){ //该方法实现取得目录内容File file=new File(path); //用路径实例化一个文件对象File[] files=file.listFiles(); //重点:取得目录内所有文件列表StringBuffer message=new StringBuffer(); //实例化一个StringBuffer,用于处理显示的字符串message.append(path); //增加信息message.append(" 内容如下:\n");for (int i=0;i<files.length;i++){if (files[i].isDirectory()){ //如果这是一个目录message.append("<dir>\t"); //增加目录标识}else{message.append("\t");}message.append(files[i].getName()); //增加文件或目录名message.append("\n");}jtfShow.setText(new String(message)); //显示消息}public static void main(String[] args){new ListFileDemo();}}(2)UDP通信import java.awt.event.*;import .*;import javax.swing.*;public class UDPClientDemo extends JFrame{String host="localhost"; //服务器地址int port=2345; //端口号public UDPClientDemo(){try{DatagramSocket socket=new DatagramSocket(); //实例化一个数据报SocketInetAddress address=InetAddress.getByName(host); //服务器地址byte[] buffer=new byte[256]; //缓冲区DatagramPacket packet=newDatagramPacket(buffer,buffer.length,address,port); //实例化一个数据报socket.send(packet); //发送报文packet=new DatagramPacket(buffer,buffer.length);socket.receive(packet); //接受回应String message=new String(packet.getData()); //得到报文信息System.out.println("Received from: "+packet.getAddress()); //显示信息源地址System.out.println(message); //显示服务器返回信息socket.close(); //关闭端口}catch (Exception ex){ex.printStackTrace(); //输出出错信息}}public static void main(String[] args){new UDPClientDemo();}}import java.awt.*;import java.awt.event.*;import .*;import javax.swing.*;public class UDPServerDemo extends JFrame{int port=2345; //端口号public UDPServerDemo(){try{byte[] buffer=new byte[256]; //缓冲区数组DatagramSocket socket=new DatagramSocket(port);//实例化数据报SocketDatagramPacket packet;System.out.println("Server start..."); //输出运行信息while (true){packet=new DatagramPacket(buffer,buffer.length); //实例化数据报socket.receive(packet); //接受请求InetAddress target=packet.getAddress();System.out.println("Received from"+target); //输出请求地址int port=packet.getPort(); //得到接收端口byte[] message="This is server,Who are you?".getBytes(); //服务器返回信息packet=newDatagramPacket(message,message.length,target,port); //实例化数据报socket.send(packet); //发送数据报}}catch (Exception ex){ex.printStackTrace(); //输出出错信息}}public static void main(String[] args){new UDPServerDemo();}}(3)HTTP连接与浏览import java.awt.*;import java.awt.event.*;import .*;import java.io.*;import javax.swing.*;import javax.swing.text.DefaultStyledDocument;public class HTTPBrowser extends JFrame{JTextField jtfAddress; //输入html文件地址或网址JTextPane jtpShow; //显示页面JTextArea jtaSource; //显示HTML源文件public HTTPBrowser(){super("HTTP连接与浏览"); //调用父类构造函数jtfAddress=new JTextField(30); //实例化地址输入框jtpShow=new JTextPane(); //实例化显示内容框jtaSource=new JTextArea();JPanel p1=new JPanel(); //实例化面板JSplitPane spane=new JSplitPane(JSplitPane.VERTICAL_SPLIT);//实例化分隔面板p1.add(new JLabel("地址")); //增加组件到面板上p1.add(jtfAddress);spane.add(new JScrollPane(jtpShow),JSplitPane.TOP);spane.add(new JScrollPane(jtaSource),JSplitPane.BOTTOM);spane.setDividerLocation(130); //设置分隔位置spane.setDividerSize(2); //设置分隔栏尺寸Container container=getContentPane(); //得到容器container.add(p1,BorderLayout.NORTH); //增加组件到容器上container.add(spane,BorderLayout.CENTER);jtfAddress.addActionListener(new ShowHTMLListener()); //输入地址文本域事件处理setSize(380,300); //设置窗口尺寸setVisible(true); //设置窗口可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}class ShowHTMLListener implements ActionListener {public void actionPerformed(ActionEvent event) {try{URL address=new URL(jtfAddress.getText()); //得到HTML页面的URL地址jtpShow.setContentType("text/html"); //设置内容格式jtpShow.setPage(address); //设置显示页面BufferedReader in= new BufferedReader(new InputStreamReader(address.openStream())); //获取输入流String line;StringBuffer content = new StringBuffer(); //文件内容while ((line = in.readLine()) != null) { //读取文件content.append(line+"\n");}jtaSource.setText(new String(content)); //设置显示文本in.close(); //关闭输入流}catch (Exception ex){ex.printStackTrace(); //输出出错信息}}}public static void main(String[] args){new HTTPBrowser();}}友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
⼏个java编程的典型例⼦1.模拟酒店房间管理系统,需要如下⼏个功能:1、1 in 房间号客⼈名字⼊住功能1、2 out 房间号退房功能1、3 search 房间号查询房间状态如果房间号为-1 则输出所有房间状态1、4 quit 或 exit 退出提⽰:酒店所有的房间⽤⼆维数组来实现代码实现如下:1 import java.util.Scanner;23public class HotelDemo {4//写在类⾥⾯,则每个⽅法都可以访问到,避免了参数传递的繁琐;5static int h=5,w=10;6static String[][] rooms=new String[5][10];7public static void main(String[] args) {8 @SuppressWarnings("resource")9 Scanner s=new Scanner(System.in);10while(true){11 System.out.println("请输⼊ in,out,search,quit:");12 String temp=s.next();13int room=0;14if("in".equals(temp)){//防⽌出现空指针异常;15 System.out.println("输⼊房间号:");16 room=s.nextInt();17 System.out.println("输⼊名字:");18 String name=s.next();19if(in(room,name)) System.out.println("⼊住完成!");20 System.out.println("room"+room+"name"+name);21 }else if("out".equals(temp)){22 System.out.println("输⼊房间号:");23 room=s.nextInt();24if(out(room)) System.out.println("退房完成!");25 System.out.println("out"+room);26 }else if("search".equals(temp)){27 System.out.println("输⼊房间号(-1代表全部):");28 room=s.nextInt();29 search(room);30 }else if("quit".equals(temp)||"exit".equals(temp)){31break;32 }else{33 System.out.println("命令错误!");34 }35 }36 }3738private static boolean search(int room) {39if(room==-1){40//打印所有的信息;41for(int i=0;i<h;i++){42for(int j=0;j<w;j++){43int room2=(i+1)*100+j+1;44 System.out.print(room2+"\t");45 }46 System.out.println();47for(int k=0;k<w;k++){48 System.out.print(rooms[i][k]==null?"empty":rooms[i][k]);49 System.out.print("\t");50 }51 System.out.println();52 System.out.println();53 }54return true;5556 }else{57int r=room/100-1;58int c=room%100-1;59if(r<0||r>=h||c<0||c>=w){60 System.out.println("房间号错误!");61return false;62 }63 System.out.println(rooms[r][c]==null?"empty":rooms[r][c]);64return true;65 }66 }6768private static boolean out(int room) {69int r=room/100-1;70int c=room%100-1;71if(r<0||r>=h||c<0||c>=w){72 System.out.println("房间号错误!");73return false;74 }75if(rooms[r][c]==null||"".equals(rooms[r][c])){// 76 System.out.println("此房间没有⼈!");77return false;78 }79 rooms[r][c]=null;80return true;81 }8283private static boolean in(int room, String name) { 84int r=room/100-1;85int c=room%100-1;86if(r<0||r>=h||c<0||c>=w){87 System.out.println("房间号错误!");88return false;89 }90if(rooms[r][c]!=null){//91 System.out.println("此房间已经有⼈!"); 92return false;93 }9495 rooms[r][c]=name;96return true;9798 }99100 }2.螺旋矩阵例import java.util.Scanner;public class SpiralSquare01{public static void main(String[] args) {@SuppressWarnings("resource")Scanner s=new Scanner(System.in);System.out.println("请输⼊螺旋⽅阵的长");int indexY=s.nextInt();System.out.println("请输⼊螺旋⽅阵的宽");int indexX=s.nextInt();if(indexX<=0||indexY<=0){System.out.println("输⼊的数字不合法!");return;}int[][] square=new int[indexX][indexY];int x=0;int y=0;for(int i=1;i<=indexX*indexY;){while(y<square[x].length-1&&square[x][y+1]==0){square[x][y++]=i++;}while(x<square.length&&square[x][y]==0){square[x++][y]=i++;}while(y>0&&square[x-1][y-1]==0){square[x-1][--y]=i++;}--x;while(x>1&&square[x-1][y]==0){square[--x][y]=i++;}y++;}for(int i=0;i<square.length;i++){for(int j=0;j<square[i].length;j++){System.out.print(square[i][j]+"\t");}System.out.println();}}}运⾏结果:3.经典数学问题:百鸡问题的变形题⽬描述:有36个⼈,36块砖,每⼈搬了⼀次,正好搬完。
20个java案例以下是20个Java案例,涵盖了不同的主题和功能。
每个案例都有一个简要的描述和示例代码。
1. 计算两个数的和。
描述,编写一个程序,计算两个整数的和并输出结果。
示例代码:java.int num1 = 10;int num2 = 5;int sum = num1 + num2;System.out.println("两个数的和为," + sum);2. 判断一个数是否为偶数。
描述,编写一个程序,判断一个整数是否为偶数,并输出结果。
示例代码:java.int num = 6;if (num % 2 == 0) {。
System.out.println(num + "是偶数。
");} else {。
System.out.println(num + "不是偶数。
");}。
3. 求一个数的阶乘。
描述,编写一个程序,计算一个正整数的阶乘,并输出结果。
示例代码:java.int num = 5;int factorial = 1;for (int i = 1; i <= num; i++) {。
factorial = i;}。
System.out.println(num + "的阶乘为," + factorial);4. 判断一个字符串是否为回文字符串。
描述,编写一个程序,判断一个字符串是否为回文字符串,并输出结果。
示例代码:java.String str = "level";boolean isPalindrome = true;for (int i = 0; i < str.length() / 2; i++) {。
if (str.charAt(i) != str.charAt(str.length() 1 i)) {。
isPalindrome = false;break;}。