3、 编写一个Java GUI应用程序,窗口标题为“GridLayout”,窗口布局如下图A所示,在图A窗口中单击任意一个Button,网格的划分方式会变化为图B;在图B窗口中单击任意一个Button,网格的划分方式会变化为图A。(25分)(如果看不见图的话麻烦搜一下ITAT)http://www.itatedu.com/itatCompete/compete5/fiels5/Java4fs.htm 图A 图B
附加题:5、 某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:
(1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,……,n-1。手机随机放在其中一个盒子中。(n为自然数)
(2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。(m为自然数,m<n)
(3)直到重新摸到0号盒子为止。
例如n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。
请编写一个完整的程序,随机输入n,m(m<n),程序分析手机有没有不被抽中的机会?如果有,概率是多少? (概率=不被抽中的可能数/n)(30分)6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。(20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)
附加题:5、 某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:
(1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,……,n-1。手机随机放在其中一个盒子中。(n为自然数)
(2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。(m为自然数,m<n)
(3)直到重新摸到0号盒子为止。
例如n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。
请编写一个完整的程序,随机输入n,m(m<n),程序分析手机有没有不被抽中的机会?如果有,概率是多少? (概率=不被抽中的可能数/n)(30分)6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。(20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.*;
public class guiTest implements ActionListener{
private JFrame frame;
private JButton[] buttons;
private boolean flag;
public guiTest(){
flag=true;
frame=new JFrame();
frame.setLayout(new GridLayout(2,3));
buttons=new JButton[6];
for(int i=0;i<6;i++){
buttons[i]=new JButton(i+"");buttons[i].addActionListener(this);
frame.add(buttons[i]);
}
frame.setSize(400,300);
frame.setLocation(200,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new guiTest(); }
@Override
public void actionPerformed(ActionEvent e) {
if(flag){
frame.repaint();
frame.setLayout(new GridLayout(3,2));
for(int i=0;i<6;i++){
frame.add(buttons[i]);
}
frame.setVisible(true);
flag=false;
}else{
frame.repaint();
frame.setLayout(new GridLayout(2,3));
for(int i=0;i<6;i++){
frame.add(buttons[i]);
}
frame.setVisible(true);
flag=true;
}
}}
测试过了,满足LZ的要求
第二题给个思路 判断是否能中奖
如果设 n,m的最小公倍数为minList list = new LinkedList();
for(int i=m int j=n; i<=min; i+=m){
if(i>j){
j+=n;
}
list.add(n-m);
}
//做完了,判断list里面包含0,1,2,3...n-1这些就有可能中奖
//不被抽中概率好像就是 n-1/n//加点理解 觉得好像互质的n,m才可能
//LinkList 可以换成 实现了sorted和set接口的集合
呵呵 bao110908和严格待人啊 其实也对
所以大家就讨论下 第二题有没有比较好点的思路吧
ITAT听说过,很重要的比赛吗?没参加过,不过看这题,都是和网络编程有关啊
n=am+b;
这样可不太好 我就是因为不想帮人完成任务把代码的思想贴出来了 看别人答案这样对你没有好处
我在前面已经提出了一种可行方法 你自己做做不就OK了
6题看看IO流和嵌套字编程不就出来了吗
自己写(说实话还没那个能力呢 )
那ITAT的证有用么我想问
{
HashSet<Integer> set = new HashSet<Integer>();
set.add(0);
for(int k = 1; (k*m) % n != 0; k++)
{
set.add((k*m) % n);
}
if(n == set.size())
System.out.println("一定会被抽中");
else{
float result = (n - set.size())/(float)n;
System.out.println("不被抽中的概率为:" + result);
}
}
/*5、 某企业为了促销,搞抽奖宣传活动,奖品为新款手机一部,抽奖规则如下:
(1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,……,n-1。手机随机放在其中一个盒子中。(n为自然数)
(2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。(m为自然数,m <n)
(3)直到重新摸到0号盒子为止。
例如n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。
请编写一个完整的程序,随机输入n,m(m <n),程序分析手机有没有不被抽中的机会?如果有,概率是多少? (概率=不被抽中的可能数/n)(30分)*/
public class Test3{
public static void main(String[] args) {
System.out.println("不被摸中的概率是:"+guess(5,3));
}
public static double guess(int n,int m){
boolean[] isHit=new boolean[n];
int count=0;//不被摸中的盒子数。
int currentBox=0;
int times=0;
System.out.println("被摸到的盒子编号为");
do{
System.out.println(currentBox);
isHit[currentBox]=true;
times++;
currentBox=(m*times)%n;
}while(currentBox!=0);
for(boolean b:isHit){
if(!b){
count++;
}
}
return (double)count/n;
}
}
(1)有n个盒子摆成一圈,盒子按顺时针方向依次编号为0,1,2,……,n-1。手机随机放在其中一个盒子中。(n为自然数)
(2)从0号盒子开始摸奖,顺时针方向计数,每遇到第m个盒子就摸奖一次。(m为自然数,m <n)
(3)直到重新摸到0号盒子为止。
例如n=5,m=3,那么摸奖经过的盒子编号依次为0,3,1,4,2,0。
请编写一个完整的程序,随机输入n,m(m <n),程序分析手机有没有不被抽中的机会?如果有,概率是
多少? (概率=不被抽中的可能数/n)(30分)*/
import java.util.Iterator;
import java.util.Scanner;class Circle {
private Entry header = null;
private int size = 0; public Circle(int capacity) {
for (int i = 0; i < capacity; ++i)
add();
} private void add() {
Entry newEntry = new Entry(size++);
if (header == null) {
header = newEntry;
header.previous = header.next = header;
} else {
header.previous.next = newEntry;
newEntry.previous = header.previous;
header.previous = newEntry;
newEntry.next = header;
}
} public int size() {
return size;
} public Iterator<Integer> circleIterator() {
return new CircleIterator(header);
} private class CircleIterator implements Iterator<Integer> {
private Entry current; CircleIterator(Entry start) {
current = start;
} public boolean hasNext() {
return current != null;
} public Integer next() {
if (hasNext()) {
int label = current.label;
current = current.next;
return label;
}
return null;
} public void remove() {
if (current != null) {
Entry e = current.previous;
if (e == header)
header = e.next;
e.next.previous = e.previous;
e.previous.next = e.next;
--size;
}
} } private static class Entry {
int label;
Entry previous, next; Entry(int label) {
this.label = label;
}
}
}public class TestQiye {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("enter m and n");
int n = Integer.parseInt(scanner.next()), m = Integer.parseInt(scanner.next());
int count = 0;
Circle circle = new Circle(n);
Iterator<Integer> iterator = circle.circleIterator();
iterator.next();
do {
for (int i = 1; i < m; ++i)
iterator.next();
++count;
} while (iterator.next().intValue() != 0); System.out.println(((double) (n-count)) / n);
}
}
好几套题都是这个样子的呀那个图就是引用的ITAT的图
import java.net.*;
import java.io.*;public class SampleServer extends Thread
{
static BufferedReader in;
static PrintWriter out;
public static void main(String[] arges)
{
try
{
int port = 5678;
//使用5678端口创建一个ServerSocket
ServerSocket mySocket = new ServerSocket(port);
//等待监听是否有客户端连接
Socket sk = mySocket.accept();
//接受从客户端过来的数据流
BufferedReader in = new BufferedReader(new InputStreamReader(sk.getInputStream ()));
//发送服务器端给客户端的数据流
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk.getOutputStream ())),true);
// BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
System.out.println ("客户端信息:"+in.readLine());
out.println ("receive:I have accept your information");
}
}
catch(Exception e)
{
System.out.println("客户端已经退出!");
}
}
}
import java.io.*;
import java.net.*; public class SampleClient
{
public static void main(String[] arges)
{
try
{
//获取一个IP。null表示本机
InetAddress addr = InetAddress.getByName(null);
//打开5678端口,与服务器建立连接
Socket sk = new Socket ("172.20.9.79", 5678);
//缓存输入
BufferedReader in = new BufferedReader(new InputStreamReader(sk.getInputStream ()));
//缓存输出
PrintWriter out = new PrintWriter (new BufferedWriter(new OutputStreamWriter(sk.getOutputStream ())),true);
//向服务器发送信息
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String str = "";
while(true)
{
System.out.print("客户端:");
str = buf.readLine();
if(str.equals("end"))break;
out.println (str);
//接收服务器信息
System.out.println ("服务器端信息:"+in.readLine ());
}
}
catch(Exception e)
{
System.out.println(e);
}
}
}
比如n=7 m=3 本应该放进set里的为 0,3,6,2,0
而此程序为 0,3,6,2,5 其实2和5中的3已经到了set中 则此次只跳过了一个数
*
* @author Administrator
*/
public class Test16 {
public static void main(String args[]){
WindowTest01 t=new WindowTest01();
}
}
package MyTest;import java.awt.Button;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;/**
*
* @author Administrator
*/
public class WindowTest01 extends JFrame implements ActionListener{
Button b1,b2,b3,b4,b5,b6;
boolean flag=true;
public WindowTest01(){
init();
setBounds(100,100,200,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} private void init() {
setLayout(new GridLayout(3,2));
b1=new Button("one");
b2=new Button("two");
b3=new Button("three");
b4=new Button("four");
b5=new Button("five");
b6=new Button("six");
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
add(b6);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
} @Override
public void actionPerformed(ActionEvent e) {
if(flag){
repaint();
setLayout(new GridLayout(2,3));
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
add(b6);
setVisible(true);
flag=false;
}
else{
repaint();
setLayout(new GridLayout(3,2));
add(b1);
add(b2);
add(b3);
add(b4);
add(b5);
add(b6);
setVisible(true);
flag=true;
}
}
}