java课程设计-小狗来回跑问题
2018-01-04 14:18
323 查看
父亲和儿子带着小狗去野外旅游。因为父亲有事,所以儿子带着小狗先走10分钟。在这10分钟里,儿子和小狗的速度均为80米/分钟。在10分钟后及父亲追上儿子之前,儿子以两种速度交替前进,即先以160米/分钟的速度小跑10分钟,再以80米/分钟走10分钟。在这10分钟后及父亲追上儿子之前,父亲也开始出发,同样也以两种速度交替前进,即先以75米/分钟走10分钟,再以200米/分钟的速度小跑10分钟。在10分钟后及父亲追上儿子之前,小狗则开始以500米/分钟的速度往返于父亲与儿子之间。当父亲追上儿子之后,儿子、父亲和小狗一同以75米/分钟前进。
要求由程序的参数指定儿子出发后的分钟数,程序计算并输出这时儿子、父亲和小狗离开家的距离,行进的方向和速度以及小狗在儿子和父亲之间往返的次数。
要求由程序的参数指定儿子出发后的分钟数,程序计算并输出这时儿子、父亲和小狗离开家的距离,行进的方向和速度以及小狗在儿子和父亲之间往返的次数。
package 小狗来回跑; import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Client { public static void main(String args[]) { new ComputerClient(); } } class ComputerClient extends Frame implements Runnable,ActionListener { Button connection,send;//定义连接,发送按钮 //定义文本框 TextField inputText,showResult1,showResult2,showResult3,showResult4,showResult5,showResult6,showResult7; Socket socket=null;//尽早将对象设置为null, DataInputStream in=null;//可以方便在垃圾回收器回收时直接回收掉为null变量先前引用的对象, DataOutputStream out=null;//可以方便在垃圾回收器回收时直接回收掉为null变量先前引用的对象, Thread thread;//定义线程 ComputerClient() { socket=new Socket();//创建一个Socket对象 setLayout(new FlowLayout());//设置布局 Box box=Box.createVerticalBox();//创建列式盒式容器 connection=new Button("连接服务器");//设置连接的按钮名称 send=new Button("发送");//设置发送按钮名称 send.setEnabled(false);//设置在服务器没连通时发送按钮不可用 inputText=new TextField(12);//创建文本框,下同 showResult1=new TextField(12); showResult2=new TextField(12); showResult3=new TextField(12); showResult4=new TextField(12); showResult5=new TextField(12); showResult6=new TextField(12); showResult7=new TextField(12); showResult1.setEditable(false);//设置不可编辑状态 showResult2.setEditable(false);//设置不可编辑状态 showResult3.setEditable(false);//设置不可编辑状态 showResult4.setEditable(false);//设置不可编辑状态 showResult5.setEditable(false);//设置不可编辑状态 showResult6.setEditable(false);//设置不可编辑状态 showResult7.setEditable(false);//设置不可编辑状态 box.add(connection);//增加标签,同下 box.add(new Label("输入时间")); box.add(inputText); box.add(send); box.add(new Label("父亲离家的距离:")); box.add(showResult1); box.add(new Label("儿子离家的距离:")); box.add(showResult2); box.add(new Label("小狗离家的距离:")); box.add(showResult3); box.add(new Label("父亲此时的速度:")); box.add(showResult4); box.add(new Label("儿子此时的速度:")); box.add(showResult5); box.add(new Label("小狗此时的方向:")); box.add(showResult6); box.add(new Label("小狗的返回次数:")); box.add(showResult7); connection.addActionListener(this);//connection将自身注册为自己的监视器 send.addActionListener(this);//send将自身注册为自己的监视器 thread=new Thread(this);//线程本身作为目标对象 add(box);//增添盒式容器 setBounds(10,30,300,500);//设置窗口在屏幕上的位置及大小 setVisible(true);//设置窗口可见 validate();//使容器再次布置其子组件 addWindowListener(new WindowAdapter()//添加一个窗口监听 { public void windowClosing(WindowEvent e)//这是窗口关闭事件 { System.exit(0);//退出 } }); } public void actionPerformed(ActionEvent e)//覆写动作方法 { if(e.getSource()==connection)//调用事件源的getSource()方法就能获得注册的这个对象 { try//请求和服务器建立套接字连接 { if(socket.isConnected())//Socket对象如果连接成功 {} else { InetAddress address=InetAddress.getByName("127.0.0.1");//获取IP地址 InetSocketAddress socketAddress=new InetSocketAddress(address,4331);//获取地址和端口号 socket.connect(socketAddress);//发出呼叫 in=new DataInputStream(socket.getInputStream()); //获取输入流 out=new DataOutputStream(socket.getOutputStream());//获取输出流 send.setEnabled(true);//设置在服务器连通时发送按钮可用 thread.start();//启动线程 } } catch(IOException ee) {} } if(e.getSource()==send)//调用事件源的getSource()方法就能获得注册的这个对象 { try { out.writeUTF(inputText.getText());//手动输入时间 } catch(IOException e1){} } } public void run() { String a=null; String b=null; String c=null; String d=null; String e=null; String f=null; String g=null; try{ a=in.readUTF(); showResult2.setText(a);//儿子离家距离 b=in.readUTF(); showResult5.setText(b);//儿子此时的速度 c=in.readUTF(); showResult1.setText(c);//父亲离家的距离 d=in.readUTF(); showResult4.setText(d);//父亲此时的速度 e=in.readUTF(); showResult3.setText(e);//父亲离家的距离 f=in.readUTF(); showResult6.setText(f);//父亲此时的速度 g=in.readUTF(); showResult7.setText(g);//父亲此时的速度 System.out.println("儿子离家距离是:"+a+"米"); System.out.println("儿子的速度是:"+b+"米每分钟"); System.out.println("儿子的方向是:正向的"); System.out.println("父亲的离家距离是:"+c+"米"); System.out.println("父亲的速度是"+d+"米每分钟"); } catch(IOException e1) { showResult1.setText("与服务器已断开连接"); } } }
package 小狗来回跑; import java.io.*; import java.net.*; import java.util.*; public class Server { public static void main(String args[]) { ServerSocket server=null; Server_thread thread;//定义线程 Socket you=null; while(true) { try { server=new ServerSocket(4331); //创建端口号 } catch(IOException e1) { System.out.println("正在监听");//ServerSocket对象不能重复创建 } try { System.out.println("等待客户呼叫"); you=server.accept();//将客户端和服务器套接字连接 System.out.println("客户的地址:"+you.getInetAddress()); } catch(IOException e) { System.out.println("正在等待客户"); } if(you!=null) { new Server_thread(you).start();//为每个客户启动一个专门的线程 } } } } class Server_thread extends Thread { Socket socket;//对象组合,委托 DataOutputStream out=null; DataInputStream in=null; String s=null; boolean quesion=false;//初始化 Server_thread(Socket t)//构造方法 { socket=t; try { out=new DataOutputStream(socket.getOutputStream()); in=new DataInputStream(socket.getInputStream()); } catch (IOException e){} } public void A() throws IOException { int time=0; try { out=new DataOutputStream(socket.getOutputStream()); in=new DataInputStream(socket.getInputStream()); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } double sFather = 0;//爸爸离家的距离 double sSon =0;//儿子离家的距离 double sDog =0;//小狗离家的距离 int flg = -1;//小狗跑的方向,朝爸爸为-1,朝儿子为1 boolean father=true; int t = 1;//时间的循环变量,以一秒为单位4 int cnt = 0;//小狗在爸爸跟儿子间来回的次数 double vFather=0; double vSon=0; double vDog=500; try { time=Integer.parseInt(in.readUTF());//读取时间 } catch (NumberFormatException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(600<(time*60)&&(time*60)<=3475) { time=time-10; sSon+=800; sDog+=800; while(t <= time*60){ vFather = (double)75/60;//1秒的速度 vSon = (double)80/60;//1秒的速度 if(t % (20*60) > (10*60)){ vFather = (double)200/60;//1秒的速度 vSon = (double)160/60;//1秒的速度 } sFather += vFather; father=true; sSon += vSon; sDog += flg * 500/(double)60;//加小狗1秒的速度 t++; if(sFather >= sDog) {flg = 1; cnt++;} if(sSon <= sDog) {flg = -1; cnt++;} } vSon=vSon*60; vFather*=60; } else if(time<=10) { sSon=80*time; sFather=0; sDog=sSon; father=false; vSon=80; vDog=vSon; vFather=0; flg=1; } else { sSon=7833.3+(60*time-3475)*75; sFather=sSon; sDog=sSon; father=true; vSon=75; vDog=vSon; vFather=75; flg=1; cnt=82; } System.out.println("儿子离家距离是:"+sSon+"米"); System.out.println("儿子的速度是:"+vSon+"米每分钟"); System.out.println("儿子的方向是:正向的"); System.out.println("父亲的离家距离是:"+sFather+"米"); System.out.println("父亲的速度是"+vFather+"米每分钟"); String str1 = String.valueOf(sSon); String str2 = String.valueOf(vSon); String str3 = String.valueOf(sFather); String str4 = String.valueOf(vFather); try { out.writeUTF(str1); out.writeUTF(str2); out.writeUTF(str3); out.writeUTF(str4); } catch (I a52b OException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(father) System.out.println("父亲的方向是:正向的"); else System.out.println("父亲此时无方向"); System.out.println("小狗的离家距离是:"+sDog+"米"); System.out.println("小狗的速度是:"+vDog+"米每分钟"); String str5 =String.valueOf(sDog); try { out.writeUTF(str5); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(flg==1) { System.out.println("小狗的方向是正向的"); String str6 ="正向"; out.writeUTF(str6); } else { System.out.println("小狗的方向是反向的"); String str6 ="反向"; out.writeUTF(str6); } System.out.println("小狗往返的次数是"+cnt+"次"); String str7 =String.valueOf(cnt); out.writeUTF(str7); } public void run() { try { try { A(); } catch(NumberFormatException e) { out.writeUTF("请输入数字字符"); } } catch(IOException e) { System.out.println("客户离开"); return; } } }
相关文章推荐
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- java课程设计-小狗来回跑问题
- 课程设计——利用信号量实现生产者-消费者问题(java)
- java课程实验设计——数据库连接 问题
- 课程设计——利用信号量实现哲学家进餐问题(JAVA)
- 课程设计——利用信号量实现读-写者问题(JAVA)
- Java课程设计常见技术问题(程序部署、数据库、JSP)
- JAVA课程设计-20161222-JDBC连接问题
- Java 小例子:图书馆课程设计
- 越深入java 就觉得java做得越烂,java设计问题 之 : JVM缓字符串常量
- 我们的课程设计 校园导航问题