A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 残月 初级黑马   /  2015-10-19 17:56  /  800 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路)

2.编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。

3.编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法。

9 个回复

倒序浏览
package cn.itcast_01;

/*
* 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?
* 假如是50人,又需要买多少瓶可乐?(需写出分析思路)
*
* 分析:
*                 1.创建一个方法,计算多少瓶够人数喝
*                 2.方法计算思路:
*                         除去第一个人,后面的每3人为1组,不够3人为最后一组
*                         如果最后一组是3个人,那么每组只需要买2瓶,
*                         最后获取第一人的1个瓶盖,够3个瓶盖
*                         上一组人留下的瓶盖就可以换取一瓶,把瓶盖留给下一组用
*                         如果最后一组不够3人,则每人买一瓶
*                 3.调用方法
*/
public class Test1 {
        public static void main(String[] args) {
                method(28);
                method(50);
               
        }

        public static void method(int peopleNum) {
                /*
                 * 1是第一个人买的数量
                 * (peopleNum - 1) / 3) * 2:是除去第一个人,人数够3人小组买的数量
                 * (peopleNum - 1) % 3:是去除第一人,人数不够3人的小组买的数量
                 */
                int keleNum = 1 + ((peopleNum - 1) / 3) * 2 + (peopleNum - 1) % 3;
               
                System.out.println("假如是"+peopleNum+"人需要买"+keleNum+"瓶可乐");
        }
}
回复 使用道具 举报
本帖最后由 残月 于 2015-10-19 19:29 编辑

package cn.itcast_02;


/*
* 编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。
* 售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。
*/
public class Ticket {
        //定义票
        private int ticketNumber =100;

        public Ticket() {
                super();
        }

        public int getTicketNumber() {
                return ticketNumber;
        }        
}

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class TicketSealCenter implements Runnable{
        
        //创建票信息对象
        private Ticket t = new Ticket();
        //定义锁对象
        private Lock lock = new ReentrantLock();
        //定义一个数字接收票的剩余
        int num = t.getTicketNumber();
        @Override
        public void run() {
                while(true){
                        try{
                        //加鎖
                        lock.lock();
                        if(num > 0){
                                try {
                                        Thread.sleep(1000);
                                } catch (InterruptedException e) {
                                        e.printStackTrace();
                                }
                                System.out.println(Thread.currentThread().getName()+"正在出售第"+(num--)+"票");
                        }
                }finally{
                        //释放锁
                        lock.unlock();
                }
                }
        }
}
public class SealWindow {
        public static void main(String[] args) {
                //创建售票中心对象
                TicketSealCenter tsc = new TicketSealCenter();
                //创建窗口对象
                Thread t1 = new Thread(tsc,"窗口1");
                Thread t2 = new Thread(tsc,"窗口2");
                Thread t3 = new Thread(tsc,"窗口3");
               
                //启动线程
                t1.start();
                t2.start();
                t3.start();
        }
}
回复 使用道具 举报
package cn.itcast_02;
/*
* 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段创建该类的对象, 并调用该对象中的方法。
*/
public class Person {
        private String name;
        private int age;

        public Person() {
        }

        public Person(String name, int age) {
                this.name = name;
                this.age = age;
        }

        public void show() {
                System.out.println("就是任性,就是show");
        }

        @Override
        public String toString() {
                return "姓名:" + name + ", 年龄:" + age;
        }
}
public class ClassTest {
        public static void main(String[] args) throws Exception, SecurityException {
                Class<Person> c = Person.class;
                //获取构造
                Constructor<Person> con =  c.getConstructor(String.class,int.class);
                Object obj = con.newInstance("王五",15);
                System.out.println(obj);

                //获取show方法并使用
                Method m = c.getMethod("show");
                m.invoke(obj);
        }
}
回复 使用道具 举报 1 0
mark'一下  等会看
回复 使用道具 举报
有点难!
回复 使用道具 举报
收藏下,完了看看
回复 使用道具 举报
28个人买19瓶,,50个人买34瓶,,
回复 使用道具 举报
hdhdhd 中级黑马 2015-10-20 10:06:31
9#
第一题如果面试的话,暴力破解应该不错,个人见解,大神勿喷
回复 使用道具 举报
厉害,好贴!赞一个!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马