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

© 田磊阳 金牌黑马   /  2013-3-29 20:35  /  17980 人查看  /  218 人回复  /   3 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄玉昆 于 2013-4-8 09:00 编辑

活动说明:为提高大家积极性,促进大家学习的兴趣,提升大家的基础,特发此活动贴。
活动时间:2013年3月30日开始,截止到论坛的第20届交流区开办为止。

[fly]让我们的技术起飞吧[/fly]

活动内容:
主要说明:
鼓励大家出一些小程序题,其他童鞋可进行相应的回复,出题者也可给出自己的答案。具体规则如下:
出题者要求:
1、格式要求:
小程序标题:xxx(注:对于题目内容太长的,请写上标题,十个字之内)
小程序题目:xxxx
小程序答案:xxxx(需写上自己的思路)
上一题楼层及时间:第xxx楼,时间为:2013年xx月xx日(注:第一次出题,可不写)
上一题推荐的答案:第xxx楼,推荐理由:xxx(注:第一次出题,可不写)
本题目楼层及时间:第xxx楼,时间为:2013年xx月xx日(这个必须写,为方便给分)
2、题目要求:
第一、给出的题目不能过于简单,如:打印数组的内容、计算1到100的和,等等的题目,题目的程序至少要有两步的思考;当然,也不能太难,不能在基础范围之外(高新技术之前的内容皆可)。如下面示例的题目
第二、给出的题目最好不要在网上随便搜一道题就粘贴上来,一经发现,将关闭此题。
第三、给出的题目需要也同时给出题目的一点思路或提示,如果自己也不能做出来的,也可以出这个题,但是对于都认为难的,此题将关闭。
第四、不得copy别人的题目,如果出现了同样或相似的题目,将关闭第二个题目。
答题者要求:
回复者必须要点击出题者楼层下面的那个回复,不要直接回复我这个帖子,操作如下:找对需要答题的题目那一楼层,如第14楼,那么这楼下面(15楼左上)有个回复,点击这个回复即可,如图:

1、格式要求:
出题者楼层及时间:第xxx楼,时间为:2013年xx月xx日
小程序题目:xxx(直接复制出题者的小程序标题或题目即可)
小程序思路:...........(注:如果自己实在没思路,可不写此项,建议写上)
小程序答案:xxx(特别强调,一定要将代码写入代码框,如有不知道怎么操作的,请看:http://bbs.itheima.com/thread-42978-1-1.html的“⑦添加相应的代码”)
2、答题要求:
第一、杜绝复制别人答案的现象,发现后扣除技术分,严重者将禁言。
第二、每题仅限五名回复者,看到上面答题者次数为5了,请不要再回复了。例外:如果你的回答特别好,并且思路、分析、注释、总结等等都特别全,可以回复,但必须注明:“全面回复”。
第三、每题须写明你的思路,并加上相应的注释,不需每句代码都加注释,但是至少在必要出写上注释。
注:如果有为提到的问题,我们会给出比较合理的处理方式。请谅解,谢谢
活动奖励:
我想这也是大家最关心的了。只要大家按要求做,出题出的好,答题答的漂亮,技术分不会亏待的。
活动正式奖励:
出题者奖励:
第一、符合要求的题目,将加1技术分,否则不加分。
第二、每人仅限出一题,第三天方可出第二题。连续出题者,不给分,严重者(连出三题)将扣分。
第三、坚持出题者,出到第五题了,多加1技术分。如果每次自己都写了思路,并给出自己的答案,且答案思路清晰,注释齐全等等,坚持三次的,将加2技术分。需要自己说明一下:我已坚持出题五次,楼层为:xx楼,xx楼,xx楼,xx楼,xx楼。不说明不给分。
答题者奖励:
第一、答题者必须回复三道题或以上才考虑给1技术分,或者回答的一道题思路清晰,注释齐全的,给1技术分。
第二、每人每天最高给2技术分。对于答的特别好,并且思路、分析、注释、总结等等都特别全的,可给这样的一道题就加1技术分。
第三、发现copy别人答案的,扣除1技术分。
第四、坚持答题五天的,送出2技术分,坚持15天的,给出3技术分,也就是说,你第15天一共获得了5技术分。请相应的说明一下,格式如上。
示例:
出题者:
小程序标题:建立员工模型
小程序题目:假如在开发一个系统时需要对员工进行建模,员工有3个属性:姓名、工号以及工资,并含有一个方法是如何工作(实现的方法直接打印即可);创建一个普通员工类和一个经理类,经理也是员工,除了含有员工的属性外,还有一个奖金属性,请使用继承的思想设计出员工类,普通员工类和经理类,要求类中提供必要的方法进行属性访问。
小程序答案:(出题者可写,可不写,我在这里作为例子就不写了)
上一题楼层及时间:无(因为这里是第一题,就不涉及上一题了,就不用写了)
上一题推荐的答案:无 (因为这里是第一题,就不涉及上一题了,就不用写了)
回复者楼层:109楼
本题目楼层及时间:第133楼,时间为:2013年4月3日

答题者:(注:需要点击出题者即133楼下面的回复,再进行回复哦。操作方法如上面的答题者要求)
出题者楼层及时间:第133楼,时间为:2013年4月3日
答题者次数:我是本题的第3位答题者
小程序题目:建立员工模型
小程序思路:
1、建模需要是一个员工模型,即抽象出来的类。
员工类:name、id、salary,抽象方法工作。
普通员工类:继承员工类,实现工作的方法
经理类:继承了员工类,并与自己的bonus(奖金),并实现工作的方法。
小程序答案:
  1. public class AbstractDemo {
  2.         public static void main(String[] args) {
  3.                 //创建数组,存入员工
  4.                 Employee[] es = new Employee[2];
  5.                 //创建普通员工对象
  6.                 es[0] = new Manager("ZS", 1, 8500, 2000);
  7.                 //创建经理对象
  8.                 es[1] = new Pro("WS", 2, 6500);
  9.                 for(Employee e : es){
  10.                         System.out.println(e.getName() + ":" + "," + e.getId() + "," + e.getSalary() + ";");
  11.                         e.work();
  12.                 }
  13.         }
  14. }
  15. //构建员工类模型
  16. abstract class Employee{
  17.         //定义成员变量
  18.         private String name;
  19.         private int id;
  20.         private double salary;
  21.         //初始化Employee
  22.         public Employee(String name, int id, double salary) {
  23.                 this.name = name;
  24.                 this.id = id;
  25.                 this.salary = salary;
  26.         }
  27.         //公共访问成员方法
  28.         public double getSalary() {
  29.                 return salary;
  30.         }
  31.         public void setSalary(double salary) {
  32.                 this.salary = salary;
  33.         }
  34.         public String getName() {
  35.                 return name;
  36.         }
  37.         public int getId() {
  38.                 return id;
  39.         }
  40.         //各类员工工作的方式
  41.         public abstract void work();
  42. }
  43. //创建普通员工类继承员工
  44. class Pro extends Employee {
  45.         //初始化普通员工
  46.         public Pro(String name, int id, double salary) {
  47.                 super(name, id, salary);
  48.         }
  49.         //实现普通员工的work方法
  50.         public void work(){
  51.                 System.out.println(this.getName() + " is working....");
  52.         }
  53. }
  54. //创建经理类,继承员工类
  55. class Manager extends Employee {
  56.         private double bonus;
  57.         private double salary;
  58.         //初始化经理类
  59.         public Manager(String name, int id, double salary, double bonus) {
  60.                 super(name, id, salary);
  61.                 this.bonus = bonus;
  62.         }
  63.         //重构经理类成员获取工资的方法
  64.         public double getSalary() {
  65.                 return salary + bonus;
  66.         }
  67.         //获取和设定奖金的方法
  68.         public double getBonus() {
  69.                 return bonus;
  70.         }
  71.         public void setBonus(double bonus) {
  72.                 this.bonus = bonus;
  73.         }
  74.         //实现经理类work的方法
  75.         public void work(){
  76.                 System.out.println(this.getName() + " is working...");
  77.         }
  78. }
复制代码

评分

参与人数 3黑马币 +110 收起 理由
滔哥 + 50
张熙韬 + 30 赞一个!
黄玉昆 + 30 很给力!

查看全部评分

218 个回复

正序浏览
{:soso_e114:}
回复 使用道具 举报
大家就是要有这种激情,加油
回复 使用道具 举报
本帖最后由 傻瓜一点红 于 2013-4-27 20:55 编辑

俺是新手,4月24日零基础刚开始学java,也出道题试试,不足的地方还请各位大虾多多指点{:soso_e100:}
小程序标题:制作一个生日星期查询系统
小程序题目:用比较简短的代码制作一个生日星期查询系统,即用户只需输入自己的出生年月日,就可知道自己的生日是星期几
小程序答案:1、先接受用户所输入的相关信息;2、在程序里运用泰勒公式进行计算出用户生日是星期几;3、计算完成后进行输出。(请各位大虾指教,如有更简洁的思路及程序实现相同的功能,热烈欢迎跟帖)
  1. import java.util.Scanner;
  2. public class calendar1 {
  3.         public static void main(String[] args){
  4.                 Scanner in=new Scanner(System.in);
  5.                 System.out.println("欢迎来到生日星期查询系统,在这你只需输入你的出生年月日,即可知道你的生日是星期几!");
  6.                 System.out.println("请输入年:");
  7.                 int y=in.nextInt();
  8.                 System.out.println("请输入月:");
  9.                 int m=in.nextInt();
  10.                 System.out.println("请输入日:");
  11.                 int d=in.nextInt();
  12.                 System.out.println("你所输入日期为:"+y+"年"+m+"月"+d+"日");
  13.                 int w=0;
  14.                 int b=13*(13+m)/5;
  15.                 int c=13*(1+m)/5;
  16.                 if(m==1||m==2){
  17.                         if(y<=2000){
  18.                                 int a=(y-1901)/4;
  19.                                 w=(y+a+b+d-1936)%7;
  20.                                 if(w!=0){
  21.                                         System.out.println("你的生日是星期"+w);
  22.                                 }else{
  23.                                         System.out.println("你的生日是星期日");
  24.                                 }
  25.                         }else{
  26.                                 int a=(y-2001)/4;
  27.                                 w=(y+a+b+d-2037)%7;
  28.                                 if(w!=0){
  29.                                         System.out.println("你的生日是星期"+w);
  30.                                 }else{
  31.                                         System.out.println("你的生日是星期日");
  32.                                 }
  33.                         }
  34.                 }else if(y<=2000){
  35.                         int a=(y-1900)/4;
  36.                         w=(y+a+c+d-1935)%7;
  37.                         if(w!=0){
  38.                                 System.out.println("你的生日是星期"+w);
  39.                         }else{
  40.                                 System.out.println("你的生日是星期日");
  41.                         }
  42.                 }else{
  43.                         int a=(y-2000)/4;
  44.                         w=(y+a+c+d-2036)%7;
  45.                         if(w!=0){
  46.                                 System.out.println("你的生日是星期"+w);
  47.                         }else{
  48.                                 System.out.println("你的生日是星期日");
  49.                         }
  50.                 }
  51.         }
  52. }
复制代码
本题目楼层及时间:第223楼,时间为:2013年4月27日

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
抢楼吧!
回复 使用道具 举报
抢一个{:soso_e113:}
回复 使用道具 举报
{:soso_e130:}
回复 使用道具 举报
{:soso_e130:}
回复 使用道具 举报
顶起哦   哈哈
回复 使用道具 举报
本帖最后由 、__WSD吴少东 于 2013-4-18 20:04 编辑

标题:IO流入门小程序
题目: 编写程序拷贝一个文件, 尽量使用效率高的方式.

上一题楼层及时间:第198楼 时间为:2013年4月10日
上一题答案,201楼
本题目楼层及时间:第217楼,时间为:2013年4月18日
小程序答案:
  1. /*
  2. 思路:拷贝就是将一个文件读取,写到另外一个文件下,所以可以创建一个Io流来完成。
  3. 步骤:
  4. 1.用该文件夹下的文件进行测试,
  5. 2.创建读写流,和文件关联,
  6. 3.通过不断的读写完成拷贝,
  7. 4.关闭资源,
  8. */
  9. import java.io.*;
  10. class  Test06
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 Copy();
  15.         }
  16.         public static void Copy()
  17.         {
  18.                 //使用缓冲区,提高效率
  19.                 BufferedWriter bufw = null;
  20.                 BufferedReader bufr = null;
  21.                 try
  22.                 {
  23.                         //创建IO流
  24.                         bufw = new BufferedWriter(new FileWriter("Test01_copy.txt"));
  25.                         bufr = new BufferedReader(new FileReader("Test01.java"));

  26.                         String s = null;//中转站,

  27.                         while((s = bufr.readLine())!= null)//当没有文本的时候,readLine 返回null
  28.                         {
  29.                                 bufw.write(s);//打印缓冲区内的内容
  30.                                 bufw.newLine();//换行
  31.                                 bufw.flush();//刷新缓冲区
  32.                         }

  33.                 }
  34.                 catch (IOException e)//接受异常
  35.                 {
  36.                         throw new RuntimeException("读写失败");//抛出中断异常
  37.                 }
  38.                 finally//释放资源,必须执行,
  39.                 {
  40.                         if (bufr != null)
  41.                                 try
  42.                                 {
  43.                                         bufr.close();//关闭缓冲区就相当于关闭缓冲区内的流
  44.                                 }
  45.                                 catch (IOException e)
  46.                                 {
  47.                                 }
  48.                         if (bufw != null)
  49.                                 try
  50.                                 {
  51.                                         bufw.close();//先刷新缓冲区,后关闭资源
  52.                                 }
  53.                                 catch (IOException e)
  54.                                 {
  55.                                 }
  56.                 }
  57.         }
  58. }
  59. 今天刚学,试着写了下,BOSS照顾我点吧<img alt="" src="http://cache.soso.com/img/img/e144.gif" border="0" smilieid="soso_e144">
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
天行健,君子以自强不息
回复 使用道具 举报
邵震 发表于 2013-3-29 20:59
版主  你这个帖子我还是没看懂  回帖方式看迷糊了。。。。。

同感,发帖回帖方式太复杂,看了一阵都没懂
回复 使用道具 举报
本帖最后由 丘凤光 于 2013-4-14 17:41 编辑

我已坚持出题五次,楼层为:74楼,172楼,175楼,207楼,214楼。每一题都给了思路了{:soso_e100:}

小程序标题:模拟抽奖
小程序题目:某抽奖活动。中一等奖的概率为0.1,中二等奖的概率为0.2,中三等奖的概率为0.3,不中奖的概率为0.4。编程模拟张三、李四、王五抽奖。
小程序答案:
  1. /*
  2. 需求:某抽奖活动。中一等奖的概率为0.1,中二等奖的概率为0.2,中三等奖的概率为0.3,不中奖的概率为0.4。编程模拟张三、李四、王五抽奖。


  3. 思路:
  4. 1、模拟人抽奖,首先需要有Person类,该类有name属性,和抽奖方法。
  5. 2、抽奖活动(方法)具有随机性,马上想到Random类和Math类的random方法
  6. 3、应为随机函数的范围是0~1.0,将其划分为四部分,比例为中奖概率即0.1:0.2:0.3:0.4即1:2:3:4
  7. 4、因为产生的一个随机数就代表一张奖票,应该为正整数,将票一般很大,设为100,故随机产生的数应该在1~100间

  8. */

  9. import java.util.*;
  10. class ChouJiang
  11. {
  12.         public static void main(String[] args)
  13.         {
  14.                 //使用Person类进行抽奖
  15.                 Person p1=new Person("张三");
  16.                 Person p2=new Person("李四");
  17.                 Person p3=new Person("王五");
  18.                 p1.chouJiang();
  19.                 p2.chouJiang();
  20.                 p3.chouJiang();
  21.         }        
  22. }

  23. //Person类
  24. class Person
  25. {
  26.         private String name;
  27.         Person(String name)        //人这对象一建立就初始化使其有姓名
  28.         {
  29.                 this.name=name;
  30.         }

  31.         //抽奖函数
  32.         public void chouJiang()
  33.         {
  34.                 Random r=new Random();        //建立随机类Random对象
  35.                 int i=(int)(r.nextDouble()*100+1);
  36.                 //按中奖概率划分随机产生奖票
  37.                 if(i>=1&&i<=10)
  38.                         sop(this.name+"抽中一等奖");
  39.                 else if(i>=11&&i<=30)
  40.                         sop(this.name+"抽中二等奖");
  41.                 else if(i>=31&&i<=60)
  42.                         sop(this.name+"抽中三等奖");
  43.                 else
  44.                         sop("很遗憾,"+this.name+"没有中奖");
  45.         }

  46.         //输出函数
  47.         private void sop(Object obj)
  48.         {
  49.                 System.out.println(obj);
  50.         }
  51. }
复制代码
上一题楼层及时间:第207楼,时间为:2013年4月10日
上一题推荐的答案:(已给出)
本题目楼层及时间:第214楼,时间为:2013年4月14日


评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 段旭东 于 2013-4-14 09:35 编辑

小程序标题:练习java语言的经典小例子。
小程序题目:有一堆苹果,你第一天吃掉一半加一个,第二天又吃掉剩下的一半加一个,到第十三天吃了剩下的最后一个苹果,问:最初有几个苹果?

PS:吃掉的是一堆苹果的一半哦!第二天是剩下半堆的一半哦!不是一个苹果分开吃。。。。
       可以用很多方法,结果不重要 最主要的是算法,思想!
结果:做出的的结果数量可能有点巨大!各位不要惊讶!
小程序答案:
  1. public class d1 {
  2. //有一堆苹果,你第一天吃掉一半加一个,第二天又吃掉剩下的一半加一个,到第十三天吃了剩下的最后一个苹果,问:最初有几个苹果?
  3.         public static void main(String[] args){
  4.                
  5.                 int m = 1,i;
  6.                 for(i=12;i>=1;--i)
  7.                 {
  8.                   m=(m+1)*2;
  9.                
  10.                 }
  11.                 System.out.println(m);//这是第一种方法
  12.                 System.out.println(total(1));//这是第二种方法
  13.         }
  14.         static int total(int day){
  15.                    if(day == 13){
  16.                     return 1;
  17.                    }
  18.                    else{
  19.                     return (total(day+1)+1)*2;
  20.                    }
  21.         
  22.         }
  23.         
  24. }
复制代码
上一题楼层及时间:无
上一题推荐的答案:无
回复者楼层:213楼
本题目楼层及时间:第213楼,时间为:2013年4月14日

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
报个到。  早上好。/
回复 使用道具 举报
抢一个···
回复 使用道具 举报
来的晚了,不知道还有没有。
回复 使用道具 举报
不错,不错...
回复 使用道具 举报
这......顶一下  我理解一下!
回复 使用道具 举报
小程序标题:爱因斯坦阶梯问题
小程序题目:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;若每步上7阶,最后一阶也不剩。问该阶梯至少有多少阶?
小程序答案:
  1. /*
  2. 需求:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;若每步上7阶,最后一阶也不剩。问该阶梯至少有多少阶?

  3. 思路:
  4. 1、设该阶梯共有x阶,则由题目可得出
  5.         x%2=1
  6.         x%3=2
  7.         x%5=4
  8.         x%6=5
  9.         x%7=0
  10.         解方程可得x的解有无数个。但这里求最小解。
  11. 2、因为x%7=0,所以x为7的倍数。同时x依次与2、3、5、6进行取模运算。
  12. 3、需要用一个循环遍历7的倍数,从而查出符合条件的最小解,因为x没有上限,故优先考虑while循环

  13. */
  14. class JieTi
  15. {
  16.         public static void main(String[] args)
  17.         {
  18.                 //调用函数返回最小阶梯数
  19.                 int jt=qiuJie();
  20.                 if(jt==-1)
  21.                         sop("符合条件的阶梯数不存在");
  22.                 sop("最小的阶梯数为:"+jt);
  23.         }

  24.         //求最小阶梯数
  25.         public static int qiuJie()
  26.         {
  27.                 int x=7;
  28.                 while(x<7000)        //按常理假设一个上限
  29.                 {
  30.                         //按条件遍历查找,符合条件的就返回
  31.                         if((x%2==1)&&(x%3==2)&&(x%5==4)&&(x%6==5))
  32.                                 return x;
  33.                         x+=7;//将阶梯数按7的倍数增长
  34.                         sop(x);
  35.                 }
  36.                 //考虑不存在的情况
  37.                 return -1;
  38.         }

  39.         //打印
  40.         public static void sop(Object obj)
  41.         {
  42.                 System.out.println(obj);
  43.         }
  44. }
复制代码
上一题楼层及时间:第157楼,时间为:2013年4月6日
上一题推荐的理由:将现实中的问题通过编程解决,练习思路的转换
本题目楼层及时间:第207楼,时间为:2013年4月10日

评分

参与人数 1技术分 +2 收起 理由
黄玉昆 + 2

查看全部评分

回复 使用道具 举报
本帖最后由 、__WSD吴少东 于 2013-4-10 22:02 编辑
朱德帅 发表于 2013-4-10 14:33
默认的构造函数我理解就是无参的构造函数,如果连输出语句都没有怎么能看出来是否被调用了。被调用了,你 ...

大哥。这句话怎么理解      new Test1().new GoodStudent();   
  刚学,还不怎么清楚。解释下呗。

哦,,知道了,,。忽然之间想起来了

看来不能光以来别人啊,翻看了一下内部类,了解了。
谢谢你的回答。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马