黑马程序员技术交流社区
标题:
基础测试题 来一套 ^_^ 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
第一题:
package com.itheima;
import java.util.Scanner;
public class Test1 {
/**
* @param args
* 第1题: 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner readerScanner=new Scanner(System.in);
//创建扫描对象,以System.in 为构造函数参数,用于从获取从键盘输入的数据
StringBuilder sBuilder=new StringBuilder();
//创建StringBuilder对象保存转化的结果,方便最后输出显示,考虑用StringBuilder而不是String是
//应为StringBuilder 比String具有更高的执行效率,String每次修改都会重新创建对象,增加了系统负担
int time=readerScanner.nextInt();
//从键盘获取一个int型数据,请保证为int型数据,尚未做类型判定
/*输入是时间(秒为单位),模 60 可以得到sec(秒),除以60 得到的整数继续做如上的运算,
* 依次得到min(分),hour(时),
*
*/
int sec=time%60;
if(sec!=0){
sBuilder.insert(0, sec+"秒");
}
if((time=time/60)>0){
int min=time%60;
if(min!=0){
sBuilder.insert(0, min+"分");
}
if((time=time/60)>0){
int hour=time%24;
if(hour!=0){
sBuilder.insert(0, hour+"小时");
}
if((time=time/24)>0){
int day=time%24;
if(day!=0){
sBuilder.insert(0, day+"天");
}
}
}
}
System.out.println(sBuilder.toString());
}
}
复制代码
感觉自己写的有点麻烦,还有更好 的解决方案吗?
作者:
careit
时间:
2014-8-27 11:16
第二题:
package com.itheima;
import java.util.Arrays;
import java.util.Random;
public class Test2 {
/**
* @param args
* 第1题:2、 定义一个二维int数组,编写代码获取最小元素。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=5;
int j=5;
int [][] arr=new int[i][j];//声明创建二维数组对象
Random random=new Random();//声明创建随机类,用于为二维数组添加数据
for(int m=0;m<i;m++){
for (int n = 0; n < j; n++) {
arr[m][n]=random.nextInt(59);//自定义指定范围在0-59
System.out.println("->"+arr[m][n]);
}
}
int min=Integer.MAX_VALUE, temp;
for(int m=0; m<arr.length; m++){
int [] tempArr = arr[m];
Arrays.sort(tempArr);//Arrays的sort方法对数组排序
temp = tempArr[0];
min = temp > min ? min : temp;
}
System.out.println("最小元素:"+min);
}
}
复制代码
作者:
careit
时间:
2014-8-27 11:17
第三题:
package com.itheima;
public class Test3 {
/**
* @param args
* Collection和Collections有什么关系?
* List和Set有什么异同点?
* Map有哪些常用类,各有什么特点?
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*Collection是个接口, 是各种集合结构的父接口,
* Set和List都继承了该接口
*
* Collections是集合类的一个工具类,两者并没有继承或实现 的关系。
*
* List:有序,有索引,元素可以重复。
* Set:无序,元素不可以重复
*
*Map中的存储的一对元素:一个是键,一个是值,属于键值对关系
*Map的常用类有HashMap,TreeMap,HashTable
*HashMap 键和值都是无序的
*TreeMap 按 键 排序.
*Hashtable 与HashMap类似,但HashTable是同步的.
* */
}
}
复制代码
第三题没有写代码,但后来感觉最好写代码体现出来
作者:
careit
时间:
2014-8-27 11:18
第四题:
package com.itheima;
public class Test4 {
/**
* @param args
* 第1题:编写一个函数,函数内输出一个字符串,并在主函数内调用它。
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String string="我想进入 `黑马程序员` 训练营 !";
printString(string);
}
public static void printString(String string) {
System.out.println(string);
}
}
复制代码
啥也不说了
第五题
package com.itheima;
public class Test5 {
/**
* @param args
* 第5题: 编写一个延迟加载的单例设计模式。
*/
private static Test5 instance;
//用于指定Test5的对象为单例
private Test5()
{
}
public static Test5 getInstance()
{
//判定如果Test5的对象是否为null,如果为null,实例化
if(instance==null)
{
instance=new Test5();
}
return instance;
}
}
复制代码
作者:
careit
时间:
2014-8-27 11:20
第六题:
package com.itheima;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test6 {
/**
*第6题: 编写程序,打印1到100之内的整数,但数字中包含7的要跳过,例如:17、27、71、72
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*----------String 方法 --------------------*/
for(int i=1;i<=100;i++){
//如果String中元素‘7’的位置是-1,即不包含‘7’,则输出该整数
//否则 即包含7,不输出
if( (i+"").indexOf("7")==-1)
System.out.println(i);
}
/*----------正则表达式实现 --------------------*/
String regex=".*[7]+.*";
Pattern p=Pattern.compile(regex);
Matcher m;
for (int i = 1; i < 100; i++) {
m=p.matcher(i+"");
if(!m.matches()){
System.out.println(i);
}
}
}
}
复制代码
用来两中方式:
第一种String indexOf方法
第二中 正则表达式方法
作者:
careit
时间:
2014-8-27 11:21
第7题 :
package com.itheima;
public class Test7 {
/**
* @param args
* 第7题:throw和throws有什么区别? try、catch、finally分别在什么情况下使用?
*/
/*
* 用try ,catch“捕获”(不管有没有实际捕获住)
* 处理方式有两种, 1:该方法处理,在catch中自己处理该异常
* 2:该方法不管,而是抛出,由调用该方法的方法捕获处理
* 方法内部用throw,方法外部用 有了throws,
* 有throw,就有throws
* throw在内,throws在外
* 对于有抛出异常的方法必须使用try-catch 捕获
*
* 而finally不管有没有异常一定会执行的语句。
*
* 请看如下例子
*
* 以测试将字符串“12” 和 “12a” 转化为int型数据为例,
* test 12 将不会出现异常
* test 12a 将会出现异常,该测试用例都使用try-catch-finally 用于确定finally的
* 执行情况
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("-------------test 12-----------------");
try {
testThrowsException("12");
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}finally {
System.out.println("finally 1");
}
System.out.println("-------------test 12a-----------------");
try {
testThrowsException("12a");
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.toString());
}finally {
System.out.println("finally 2");
}
System.out.println();
}
static void testThrowsException(String s) throws Exception{
//testThrowsException 将捕获的异常抛出
try {
int i=Integer.parseInt(s);
} catch (Exception e) {
// TODO: handle exception
throw new Exception("eeeeee"+e.getMessage());
}finally {
System.out.println("finally3");
}
}
}
复制代码
光说不行,得体现出来
第八题:
不说了
package com.itheima;
public class Test8 {
/**
* 声明类StudenStudentt,包含3个成员变量:name、age、score,
* 要求可以通过 new Student("张三", 22, 95) 的方式创建对象,
* 并可以通过set和get方法访问成员变量
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Student student=new Student("张三", 22, 95.0f);
System.out.println("名字"+student.getName());
System.out.println("年龄"+student.getAge());
student.setAge(23);
System.out.println("年龄"+student.getAge());
}
static class Student{
private String name;
private int age;
private float score;
//构造方法,需要三个参数
public Student(String n,int a,float s) {
// TODO Auto-generated constructor stub
name=n;
age=a;
score=s;
}
//使用Eclipse 快速工具生成以下get set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
}
}
复制代码
作者:
iefegend
时间:
2014-8-27 11:27
谢谢楼主分享
作者:
careit
时间:
2014-8-27 11:35
第十题
package com.itheima;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class Test10 {
/**
* @param args
* 10、声明类Student,包含3个成员变量:name、age、score,
* 创建5个对象装入TreeSet,按照成绩排序输出结果(考虑成绩相同的问题)
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<Student> treeSet=new TreeSet();
//实例化5个student对象
Student[] stuArr={new Student("赵", 20, 97),
new Student("钱", 22, 84),
new Student("孙", 21, 97),
new Student("李", 23, 89),
new Student("崔", 19, 99)};
//将5个student对象增加到TreeSet对象中
treeSet.add(stuArr[0]);
treeSet.add(stuArr[1]);
treeSet.add(stuArr[2]);
treeSet.add(stuArr[3]);
treeSet.add(stuArr[4]);
Iterator it=treeSet.iterator();
//获取treeSet的遍历器
while(it.hasNext()){
Student p = (Student)it.next();
System.out.println("name = "+p.getName()+" || age = "+p.getAge()+" || age = "+p.getScore());
}
}
static class Student implements Comparable{
//实现Comparable 接口的compareTo(Object o)方法
private String name;
private int age;
private float score;
public Student(String n,int a,float s) {
// TODO Auto-generated constructor stub
name=n;
age=a;
score=s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
@Override
public int compareTo(Object o) {
// TODO Auto-generated method stub
Student stu=(Student) o;
//以下实现的是升序排列
if(this.score>stu.score){
return 1;
}
if(this.score<stu.score){
return -1;
}
return 0;
}
}
}
复制代码
为啥我是10个题
作者:
28了还能学吗
时间:
2014-8-27 11:37
谢谢分享
作者:
careit
时间:
2014-8-27 11:38
第九题
package com.itheima;
import java.math.BigInteger;
public class Test9 {
/**
* @param args
* 第9题:求1000!的结果中包含多少个0?注:1000! = 1×2×3×4×5×...×999×1000
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//
int end=1000;
BigInteger res = new BigInteger("1");
//显然1000!的结果将超出int的表达范围,所以使用java包含的BigInteger来进行运算
//该类封装了字符串形式的算术运算
for(int i=1;i<=end;i++) {
res = res.multiply(new BigInteger(i+""));//乘
}
String string=res.toString();
int count=0;
//统计结果中包含多少个 0
for (int i = 0; i < string.length(); i++) {
if(string.charAt(i)=='0')
count++;
}
System.out.println("结果中共有"+count+"个0");
}
}
复制代码
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