黑马程序员技术交流社区

标题: 基础测试题 来一套 ^_^ 167910 [打印本页]

作者: careit    时间: 2014-8-27 07:55
标题: 基础测试题 来一套 ^_^ 167910
黑马程序员训练营基础测试
1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
2、 定义一个二维int数组,编写代码获取最小元素。
3、 Collection和Collections有什么关系?List和Set有什么异同点?Map有哪些常用类,各有什么特点?
4、 编写一个函数,函数内输出一个字符串,并在主函数内调用它。
5、 编写一个延迟加载的单例设计模式。
6、 编写程序,打印1到100之内的整数,但数字中包含7的要跳过,例如:17、27、71、72
7、 throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
8、 声明类Student,包含3个成员变量:name、age、score,要求可以通过 new Student("张三", 22, 95) 的方式创建对象,并可以通过set和get方法访问成员变量
9、 求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
10、声明类Student,包含3个成员变量:name、age、score,创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)。

第  1  、6、7、9、10题可以把玩把玩,各位看看,一会上我做的
作者: 黄小橙    时间: 2014-8-27 09:56
谢谢lz的分享
作者: 天黑偷牛    时间: 2014-8-27 10:06
谢谢分享
作者: wfaly    时间: 2014-8-27 10:17
谢谢 楼主分享
作者: careit    时间: 2014-8-27 11:15
第一题:
  1. package com.itheima;

  2. import java.util.Scanner;

  3. public class Test1 {

  4.         /**
  5.          * @param args
  6.          * 第1题: 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
  7.                 键盘输入6,打印6秒;
  8.                 键盘输入60,打印1分;
  9.                 键盘输入66,打印1分6秒;
  10.                 键盘输入666,打印11分6秒;
  11.                 键盘输入3601,打印1小时1秒
  12.          */
  13.         public static void main(String[] args) {
  14.                 // TODO Auto-generated method stub
  15.                 Scanner readerScanner=new Scanner(System.in);
  16.                 //创建扫描对象,以System.in 为构造函数参数,用于从获取从键盘输入的数据
  17.                 StringBuilder sBuilder=new StringBuilder();
  18.                 //创建StringBuilder对象保存转化的结果,方便最后输出显示,考虑用StringBuilder而不是String是
  19.                 //应为StringBuilder 比String具有更高的执行效率,String每次修改都会重新创建对象,增加了系统负担
  20.                 int time=readerScanner.nextInt();
  21.                 //从键盘获取一个int型数据,请保证为int型数据,尚未做类型判定
  22.                 /*输入是时间(秒为单位),模 60 可以得到sec(秒),除以60 得到的整数继续做如上的运算,
  23.                  * 依次得到min(分),hour(时),
  24.                  *
  25.                 */
  26.                 int sec=time%60;
  27.                 if(sec!=0){
  28.                         sBuilder.insert(0, sec+"秒");
  29.                 }
  30.                 if((time=time/60)>0){
  31.                         int min=time%60;
  32.                         if(min!=0){
  33.                                 sBuilder.insert(0, min+"分");
  34.                         }
  35.                         if((time=time/60)>0){
  36.                                 int hour=time%24;
  37.                                 if(hour!=0){
  38.                                         sBuilder.insert(0, hour+"小时");
  39.                                 }
  40.                                 if((time=time/24)>0){
  41.                                         int day=time%24;
  42.                                         if(day!=0){
  43.                                                 sBuilder.insert(0, day+"天");
  44.                                         }
  45.                                 }
  46.                         }
  47.                 }
  48.                 System.out.println(sBuilder.toString());
  49.         }
  50. }
复制代码



感觉自己写的有点麻烦,还有更好 的解决方案吗?
作者: careit    时间: 2014-8-27 11:16
第二题:
  1. package com.itheima;

  2. import java.util.Arrays;
  3. import java.util.Random;

  4. public class Test2 {

  5.         /**
  6.          * @param args
  7.          * 第1题:2、 定义一个二维int数组,编写代码获取最小元素。
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub
  11.                 int i=5;
  12.                 int j=5;
  13.                 int [][] arr=new int[i][j];//声明创建二维数组对象
  14.                 Random random=new Random();//声明创建随机类,用于为二维数组添加数据
  15.                 for(int m=0;m<i;m++){
  16.                         for (int n = 0; n < j; n++) {
  17.                                 arr[m][n]=random.nextInt(59);//自定义指定范围在0-59
  18.                                 System.out.println("->"+arr[m][n]);
  19.                         }
  20.                 }
  21.                
  22.             int min=Integer.MAX_VALUE, temp;
  23.             for(int m=0; m<arr.length; m++){
  24.                     int [] tempArr = arr[m];
  25.                 Arrays.sort(tempArr);//Arrays的sort方法对数组排序
  26.                 temp = tempArr[0];
  27.                 min = temp > min ? min : temp;
  28.             }   
  29.             System.out.println("最小元素:"+min);
  30.         }
  31. }
复制代码

作者: careit    时间: 2014-8-27 11:17
第三题:
  1. package com.itheima;

  2. public class Test3 {

  3.         /**
  4.          * @param args
  5.          * Collection和Collections有什么关系?
  6.          * List和Set有什么异同点?
  7.          * Map有哪些常用类,各有什么特点?
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub
  11.                 /*Collection是个接口, 是各种集合结构的父接口,
  12.                  * Set和List都继承了该接口
  13.                  *
  14.                  * Collections是集合类的一个工具类,两者并没有继承或实现 的关系。
  15.                  *
  16.                  * List:有序,有索引,元素可以重复。
  17.                  * Set:无序,元素不可以重复
  18.                  *
  19.                  *Map中的存储的一对元素:一个是键,一个是值,属于键值对关系
  20.                  *Map的常用类有HashMap,TreeMap,HashTable
  21.                  *HashMap 键和值都是无序的
  22.                  *TreeMap 按 键 排序.
  23.                  *Hashtable 与HashMap类似,但HashTable是同步的.
  24.                  *                 */
  25.         }

  26. }
复制代码

第三题没有写代码,但后来感觉最好写代码体现出来
作者: careit    时间: 2014-8-27 11:18
第四题:
  1. package com.itheima;
  2. public class Test4 {

  3.         /**
  4.          * @param args
  5.          * 第1题:编写一个函数,函数内输出一个字符串,并在主函数内调用它。
  6.          */
  7.         public static void main(String[] args) {
  8.                 // TODO Auto-generated method stub
  9.                 String string="我想进入 `黑马程序员` 训练营 !";
  10.                 printString(string);
  11.         }
  12.         public static void printString(String string) {
  13.                 System.out.println(string);
  14.         }
  15. }
复制代码


啥也不说了
第五题
  1. package com.itheima;

  2. public class Test5 {

  3.         /**
  4.          * @param args
  5.          * 第5题: 编写一个延迟加载的单例设计模式。
  6.          */
  7.          private static Test5 instance;
  8.          //用于指定Test5的对象为单例
  9.      private Test5()
  10.      {
  11.              
  12.      }
  13.      public static Test5 getInstance()
  14.      {
  15.              //判定如果Test5的对象是否为null,如果为null,实例化
  16.         if(instance==null)
  17.         {
  18.                 instance=new Test5();
  19.         }
  20.         return instance;
  21. }

  22. }
复制代码

作者: careit    时间: 2014-8-27 11:20
第六题:
  1. package com.itheima;

  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;

  4. public class Test6 {

  5.         /**
  6.          *第6题: 编写程序,打印1到100之内的整数,但数字中包含7的要跳过,例如:17、27、71、72
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub

  11.                 /*----------String 方法 --------------------*/
  12.                 for(int i=1;i<=100;i++){
  13.                         //如果String中元素‘7’的位置是-1,即不包含‘7’,则输出该整数       
  14.                         //否则 即包含7,不输出       
  15.                         if( (i+"").indexOf("7")==-1)
  16.                                 System.out.println(i);
  17.              }
  18.                 /*----------正则表达式实现 --------------------*/
  19.                 String regex=".*[7]+.*";
  20.                 Pattern p=Pattern.compile(regex);
  21.                 Matcher m;
  22.                 for (int i = 1; i < 100; i++) {
  23.                         m=p.matcher(i+"");
  24.                         if(!m.matches()){
  25.                                 System.out.println(i);
  26.                         }
  27.                 }
  28.         }
  29. }
复制代码


用来两中方式:
第一种String indexOf方法
第二中 正则表达式方法
作者: careit    时间: 2014-8-27 11:21
第7题 :
  1. package com.itheima;

  2. public class Test7 {

  3.         /**
  4.          * @param args
  5.          * 第7题:throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
  6.          */
  7.         /*
  8.          * 用try ,catch“捕获”(不管有没有实际捕获住)
  9.          * 处理方式有两种,        1:该方法处理,在catch中自己处理该异常
  10.          *                                         2:该方法不管,而是抛出,由调用该方法的方法捕获处理
  11.          * 方法内部用throw,方法外部用 有了throws,
  12.          * 有throw,就有throws
  13.          * throw在内,throws在外
  14.          * 对于有抛出异常的方法必须使用try-catch 捕获
  15.          *
  16.          * 而finally不管有没有异常一定会执行的语句。
  17.          *
  18.          * 请看如下例子
  19.          *
  20.          * 以测试将字符串“12” 和 “12a”  转化为int型数据为例,
  21.          * test  12  将不会出现异常
  22.          * test  12a 将会出现异常,该测试用例都使用try-catch-finally 用于确定finally的
  23.          * 执行情况
  24.          * */
  25.         public static void main(String[] args) {
  26.                 // TODO Auto-generated method stub
  27.                 System.out.println("-------------test 12-----------------");
  28.                 try {
  29.                         testThrowsException("12");
  30.                 } catch (Exception e) {
  31.                         // TODO: handle exception
  32.                         System.out.println(e.toString());
  33.                 }finally {
  34.                         System.out.println("finally 1");
  35.                 }
  36.                 System.out.println("-------------test 12a-----------------");
  37.                 try {
  38.                         testThrowsException("12a");
  39.                 } catch (Exception e) {
  40.                         // TODO: handle exception
  41.                         System.out.println(e.toString());
  42.                 }finally {
  43.                         System.out.println("finally 2");
  44.                 }
  45.                 System.out.println();
  46.         }
  47.         static void testThrowsException(String s) throws Exception{
  48.                 //testThrowsException 将捕获的异常抛出
  49.                 try {
  50.                         int i=Integer.parseInt(s);
  51.                 } catch (Exception e) {
  52.                         // TODO: handle exception
  53.                         throw new Exception("eeeeee"+e.getMessage());
  54.                 }finally {
  55.                         System.out.println("finally3");
  56.                 }
  57.         }
  58. }
复制代码


光说不行,得体现出来


第八题:
不说了
  1. package com.itheima;

  2. public class Test8 {

  3.         /**
  4.          * 声明类StudenStudentt,包含3个成员变量:name、age、score,
  5.          * 要求可以通过 new Student("张三", 22, 95) 的方式创建对象,
  6.          * 并可以通过set和get方法访问成员变量
  7.          * @param args
  8.          */
  9.         public static void main(String[] args) {
  10.                 // TODO Auto-generated method stub
  11.                 Student student=new Student("张三", 22, 95.0f);
  12.                 System.out.println("名字"+student.getName());
  13.                 System.out.println("年龄"+student.getAge());
  14.                 student.setAge(23);
  15.                 System.out.println("年龄"+student.getAge());
  16.         }
  17.         static class Student{
  18.                 private String name;
  19.                 private int age;
  20.                 private float score;
  21.                 //构造方法,需要三个参数
  22.                 public Student(String n,int a,float s) {
  23.                         // TODO Auto-generated constructor stub
  24.                         name=n;
  25.                         age=a;
  26.                         score=s;
  27.                 }
  28.                 //使用Eclipse 快速工具生成以下get  set方法
  29.                 public String getName() {
  30.                         return name;
  31.                 }
  32.                 public void setName(String name) {
  33.                         this.name = name;
  34.                 }
  35.                 public int getAge() {
  36.                         return age;
  37.                 }
  38.                 public void setAge(int age) {
  39.                         this.age = age;
  40.                 }
  41.                 public float getScore() {
  42.                         return score;
  43.                 }
  44.                 public void setScore(float score) {
  45.                         this.score = score;
  46.                 }
  47.         }
  48. }
复制代码

作者: iefegend    时间: 2014-8-27 11:27
谢谢楼主分享
作者: careit    时间: 2014-8-27 11:35
第十题
  1. package com.itheima;

  2. import java.util.Comparator;
  3. import java.util.Iterator;
  4. import java.util.TreeSet;

  5. public class Test10 {

  6.         /**
  7.          * @param args
  8.          * 10、声明类Student,包含3个成员变量:name、age、score,
  9.          * 创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)
  10.          */
  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 TreeSet<Student> treeSet=new TreeSet();
  14.                 //实例化5个student对象
  15.                 Student[] stuArr={new Student("赵", 20, 97),
  16.                                            new Student("钱", 22, 84),
  17.                                            new Student("孙", 21, 97),
  18.                                            new Student("李", 23, 89),
  19.                                            new Student("崔", 19, 99)};
  20.                 //将5个student对象增加到TreeSet对象中
  21.                 treeSet.add(stuArr[0]);
  22.                 treeSet.add(stuArr[1]);
  23.                 treeSet.add(stuArr[2]);
  24.                 treeSet.add(stuArr[3]);
  25.                 treeSet.add(stuArr[4]);
  26.                 Iterator it=treeSet.iterator();
  27.                 //获取treeSet的遍历器
  28.                 while(it.hasNext()){
  29.                         Student p = (Student)it.next();
  30.                           System.out.println("name = "+p.getName()+" || age = "+p.getAge()+" || age = "+p.getScore());
  31.                           }
  32.         }
  33.         static class Student implements Comparable{
  34.                 //实现Comparable 接口的compareTo(Object o)方法
  35.                 private String name;
  36.                 private int age;
  37.                 private float score;
  38.                 public Student(String n,int a,float s) {
  39.                         // TODO Auto-generated constructor stub
  40.                         name=n;
  41.                         age=a;
  42.                         score=s;
  43.                 }
  44.                 public String getName() {
  45.                         return name;
  46.                 }
  47.                 public void setName(String name) {
  48.                         this.name = name;
  49.                 }
  50.                 public int getAge() {
  51.                         return age;
  52.                 }
  53.                 public void setAge(int age) {
  54.                         this.age = age;
  55.                 }
  56.                 public float getScore() {
  57.                         return score;
  58.                 }
  59.                 public void setScore(float score) {
  60.                         this.score = score;
  61.                 }
  62.                 @Override
  63.                 public int compareTo(Object o) {
  64.                         // TODO Auto-generated method stub
  65.                         Student stu=(Student) o;
  66.                         //以下实现的是升序排列
  67.                         if(this.score>stu.score){
  68.                                 return 1;
  69.                         }
  70.                         if(this.score<stu.score){
  71.                                 return -1;
  72.                         }
  73.                         return 0;
  74.                 }
  75.         }
  76. }
复制代码

为啥我是10个题

作者: 28了还能学吗    时间: 2014-8-27 11:37
谢谢分享
作者: careit    时间: 2014-8-27 11:38
第九题
  1. package com.itheima;

  2. import java.math.BigInteger;

  3. public class Test9 {

  4.         /**
  5.          * @param args
  6.          * 第9题:求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
  7.          */
  8.         public static void main(String[] args) {
  9.                 // TODO Auto-generated method stub
  10.                 //
  11.                 int end=1000;
  12.         BigInteger res = new BigInteger("1");
  13.         //显然1000!的结果将超出int的表达范围,所以使用java包含的BigInteger来进行运算
  14.         //该类封装了字符串形式的算术运算
  15.         for(int i=1;i<=end;i++) {
  16.             res = res.multiply(new BigInteger(i+""));//乘
  17.         }
  18.         String string=res.toString();
  19.         int count=0;
  20.         //统计结果中包含多少个  0
  21.         for (int i = 0; i < string.length(); i++) {
  22.             if(string.charAt(i)=='0')
  23.                     count++;
  24.         }
  25.         System.out.println("结果中共有"+count+"个0");
  26.         }
  27.        

  28. }
复制代码

6000!的结果超出了表示范围,BigInteger提供了对大整数进行算术运算的方法,;
后来在网下看这个题,有一个类似的,计算末尾有多少连续0;

作者: 陈永赛    时间: 2014-8-27 14:50
谢谢分享,连答案的都有。
作者: 粺¹³¼畅    时间: 2014-8-27 15:23
牛人啊!!!!
作者: urwhat    时间: 2014-8-27 18:04
学习一下
作者: dhgcy    时间: 2014-8-28 08:49
谢谢分享    值得一看
作者: 我为你着迷    时间: 2014-8-28 09:07
我感觉很难啊  打击很大呀 唉
作者: 张周飞    时间: 2014-8-28 09:08

谢谢lz的分享
.{:3_46:}
作者: 大成哥    时间: 2014-8-28 09:42
好的 有些题 跟我一样
作者: 空洞的望着窗外    时间: 2014-8-28 13:21
能看书做么?
作者: dreamseekerkun    时间: 2014-8-28 14:33
感谢楼主分享,只有2个与我一样
作者: yaodd321    时间: 2014-8-28 15:32
楼主解答的很好啊
作者: 梦里听传说    时间: 2014-8-28 16:25
谢谢楼主分享
作者: 韶山    时间: 2014-8-28 16:41
感谢分享

作者: moon1993zs    时间: 2014-8-28 16:53
谢谢分享
作者: 何磊    时间: 2014-8-28 20:21
楼主很赞
作者: liqiaohui    时间: 2014-8-28 20:30
谢谢分享  可以看看




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2