ITPub博客

首页 > 应用开发 > Java > 张孝祥java精英培训班的入学测试题

张孝祥java精英培训班的入学测试题

原创 Java 作者:freeatom 时间:2007-01-13 22:45:43 0 删除 编辑

java试题1:
请在一个类中编写一个方法,这个方法搜索一个字符数组中是否存在某个字符,如果存在,则返回这个字符在字符数组中第一次出现的位置(序号从0开始计算),否则,返回-1。要搜索的字符数组和字符都以参数形式传递传递给该方法,如果传入的数组为null,应抛出IllegalArgumentException异常。在类的main方法中以各种可能出现的情况测试验证该方法编写得是否正确,例如,字符不存在,字符存在,传入的数组为null等。
java试题2:
编写一个程序,这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,例如,根据内容为[1][2][3]的数组形成内容为"1,2,3"的字符串。
java试题3:
编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。
java试题4:
请用移位的方式打印出一个十进制整数的十六进制形式。提示:按每4个二进制位对整数进行移位和去高位处理,得到的结果就是十六进制数的一位,然后按下面三种方式之一(作为作业,要求每种方式都用到)计算出一个十六进制数值对应的十六进制形式:
1)0-9之间的数值直接加上字符'0',9以上的数值减去10以后再加上字符'A'
2)定义一个数组,其中包含0-F这些字符,然后用要计算的数值作为数组的索引号,即可获得其对应的十六进制数据。
3)Character.forDigit静态方法可以将一个十六进制的数字转变成其对应的字符表示形式,例如,根据数值15返回字符'F'。
java试题5:
请结合我们的《javascript网页开发》一书中介绍的正则表达式与String.split方法,从"http://www.it315.org/get.jsp?user=zxx&pass=123"这样的URL地址中提取出每个参数的名称和值。这里要注意在正则表达式中要对?进行转义处理.
java试题6:
编写一个程序,用于实现文件的备份,程序运行时的命令语法为:
java MyCopy
java试题7:
请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
java试题8:
在javascript视频的第七讲的第一个片断,也就是网站上提供的免费片断《正
则表达式的应用》中,讲到了将一个保存有ip地址与地区对照关系的文本文件
导入到数据库时,应该将其中的某些空格替换成逗号(,),即对于如下格式的
文本文件内容:
起始IP 结束IP 地区
---------------------------------------------------------------
61.54.231.245 61.54.231.245 河南省安阳市 新世纪网吧
61.54.231.246 61.54.231.246 河南省安阳市 未知地区
61.54.231.9 61.54.231.247 河南省安阳市 红日网吧
61.54.231.248 61.54.231.248 河南省安阳市 安阳师范学院
61.54.231.249 61.54.231.249 河南省安阳市 黑蜘蛛网吧(师范
学院附近)
应转换成下面的这种格式:
61.54.231.245,61.54.231.245,河南省安阳市 新世纪网吧
61.54.231.246,61.54.231.246,河南省安阳市 未知地区
61.54.231.247,61.54.231.247,河南省安阳市 红日网吧
61.54.231.248,61.54.231.248,河南省安阳市 安阳师范学院
61.54.231.249,61.54.231.249,河南省安阳市 黑蜘蛛网吧(师范学院
附近)
在视频教程中,讲解了使用UltraEdit的正则表达式替换功能来完成上面的转
换。从jdk1.4开始,java语言中提供用于处理正则表达式的相关API类和方法,
在jdk帮助文档中,查看String类的replaceAll方法,可以看到该方法就支持
类似UltraEdit的正则表达式替换功能。
任务:
阅读String.replaceAll方法的帮助,以及它提供的相关超链接,了解该方法的
用法后,编写一个java程序来自动实现上面的正则表达式替换,将a.txt替换
后的结果保存到b.txt文件中。另外,我们在实现IT315网站的ip地区查询系
统时,使用的是类似如下的sql语法:
select 地区 from ip表 where 用户ip>起始IP and 用户ip<结束ip
通过这条sql语句就可以查询出用户ip所对应的地区结果。由于用户ip与起始
ip和结束ip的比较属于字符串比较,如果用户ip为9.1.1.1,那么它与
61.54.231.245比较的结果就是前者大于后者,因为用户ip的第一个字符“9”
大于61.54.231.245中的第一个字符“6”。
现在请你想出一种解决办法,让上面的sql语句能够返回正确结果。提示:将
9.1.1.1变化成009.001.001.001后与061.054.231.245进行比较就可以了。
请按这种思路在你的程序中增加进行这种改变的正则表达式替换。注意,起始
IP和结束IP的四个字段都有可能是1位、2位或3位数字,例如,61.5.23.1。
在源程序中,要对程序代码的功能进行注释说明,提交你编写的程序给我们时,
请附带该程序的使用说明。

这套题,挺有意思的,比一般的培训机构的题都要难,我当时本想去培训的,就都做完了,题目中涉及到的一些东西可能大家有用到的时候,我把我的答案公布下:
第1题:
import java.io.*;
public class Search
{
static char ch;
private static int sh(char ch,char[] l)
{
if (l==null)
throw new IllegalArgumentException();
int result = -1;
for(int i=0;i {
if(ch==l[i])
{
result=i;
break;
}
}
return result;
}

public static void main(String[] args) throws Exception
{
String str="";//用来存储原数组中的元素
//char[] charstr={'g','a','d'};
char[] charstr=null;
if (charstr!=null)
{
for (int i = 0; i < charstr.length; i++)
{
str = str + charstr[i];
}
}
System.out.println("The Source Text is:n"+str);
System.out.print("Please input a word to Search:");
InputStreamReader isr=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(isr);
ch=(char)br.read();
br.close();
System.out.println(sh(ch,charstr));
}
}
第2题:
public class Comma
{
private static String change(int[] group)
{
String result = "";
char buf=',';
try
{
for(int i=0;i {
result=result+group[i];
if (i {
result = result + buf;
}
}
}
catch (RuntimeException e)
{
System.out.println("原始数组不能为null");
}
return result;
}

public static void main(String[] args)
{
//int[] group={1,2,3,4,5,6};
int[] group=null;
String result=change(group);
System.out.println(result);
}
}
第3题:
import java.io.*;
public class Dicemal
{
public static void main(String[] args) throws Exception
{
int shang=0,yu;
boolean flag=false;
System.out.println("请输入一个数字(最大值为<"+Integer.MAX_VALUE+"):");
InputStream is = System.in;
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String str=br.readLine();
char[] ch=new char[str.length()];
str.getChars(0, str.length(), ch, 0);
for(int a=0;a {
if(!Character.isDigit(ch[a]))
{
System.out.println("有非数字字符");
System.exit(0);
}
}
try
{
shang=Integer.parseInt(str);
flag=true;
}
catch(Exception e)
{
System.out.println("数字过大");
}
str="";
if (flag)
{
while (shang != 0)
{
yu = shang % 2;
shang = shang / 2;
str = yu + str;
}
}
System.out.println(str);
}
}
第4题:
public class Hex
{
public static void main(String[] args)
{
int s=777777777;
int h=0x0000000f;
int m=0;
int[] buf=new int[8];
System.out.println(s);
for(int i=0;i<8;i++)
{
m=s&h;
s=s>>4;
buf[i]=m;
}
System.out.println("1st:"+first(buf));
System.out.println("2nd:"+second(buf));
System.out.println("3rd:"+third(buf));
}

private static String first(int[] buf)
{
String f="";
char c=0;
char a=0;
for(int i=0;i<8;i++)
{
if(buf[i]<=9)
{
a=(char) ('0'+buf[i]);
f=a+f;
}
else
{
c=(char) ((buf[i]-10)+'A');
f=c+f;
}
}
return f;
}

private static String second(int[] buf)
{
String s="";
char[] ch={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(int i=0;i<8;i++)
{
s=ch[buf[i]]+s;
}
return s;
}

private static String third(int[] buf)
{
String t="";
for(int i=0;i<8;i++)
{
t=Character.forDigit(buf[i], 16)+t;
}
return t;
}
}
第5题:
package regex;
public class Regex
{
public static void main(String[] args)
{
String strMar="http://www.it315.org/get.jsp?user=zxx&pass=123";
String[] str0,str1,str2;
str0=strMar.split("?");
System.out.println(str0[1]);
str1=str0[1].split("=");
str2=str1[1].split("&");
System.out.println("name1="+str1[0]+'n'+"value1="+str2[0]+'n'+"name2="+str2[1]+'n'+"value2="+str1[2]);
}
}
第6题:
import java.io.*;
public class Copy
{
public static void main(String[] args)
{
if(args.length<2)
{
System.out.println("请按java MyCopy 格式输入。");
System.exit(0);
}
File Source=new File(args[0]);
File Dest=new File(args[1]);
fileIO(Source,Dest);
}

private static void fileIO(File Source,File Dest)
{
byte[] buf=null;
try
{
FileInputStream fis=new FileInputStream(Source);
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos=new FileOutputStream(Dest);
BufferedOutputStream bos=new BufferedOutputStream(fos);
buf=new byte[1024];
int len=0;
while((len=bis.read(buf))!=-1)
{
bos.write(buf,0,len);
}
bis.close();
bos.close();
}
catch (Exception e)
{
System.out.println("文件复制失败,请检查。");
System.exit(0);
}
}
}
第7题:
package stream;
import java.io.*;
public class FileReader
{
public FileReader(File f)
{
try
{
FileInputStream fis=new FileInputStream(f);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
String strLine = "";
int i=0;
while((strLine=br.readLine())!=null)
{
i++;
strLine=i+":"+strLine;
System.out.println(strLine);
}
br.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

package stream;
import java.io.File;
class Test
{
public static void main(String[] args)
{
File f=new File("1.txt");
new FileReader(f);
}
}
第8题:
package ip;
import java.io.*;
import java.util.regex.*;
public class Ip
{
private static void fileIO(File f)
{
String strLine;
@SuppressWarnings("unused")
String line=System.getProperty("line.separator");//换行符
try
{
FileInputStream fis=new FileInputStream(f);
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
FileOutputStream fos=new FileOutputStream("c://b.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedWriter bw=new BufferedWriter(osw);
Pattern p = Pattern.compile("((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)");
//正则表达式匹配分别是(200-249|250-255|001-199)
Matcher m;
while((strLine=br.readLine())!=null)
{
strLine=strLine.replaceAll("(?<=d)s+",",");//加逗号
m=p.matcher(strLine);//加载第一行
while(m.find())
{
String buf=m.group();
strLine=m.replaceAll(change(buf));//以"."分割成数字,然后分别补零,再合并
System.out.println(strLine);
bw.write(strLine);//输入一行,不包括换行符
bw.write(line);//输入行分割符
}

}
br.close();
bw.close();
}
catch (FileNotFoundException e)
{
System.out.println("原始文件未找到");
}
catch (IOException e)
{
e.printStackTrace();
}

}

private static String fill(String str)
{
while(str.length()<3)//不足的数字补零
{
str='0'+str;
}
return str;
}

private static String change(String buf)
{
String temp = "";
String ret = "";
String[] str=buf.split(".");//以"."分割,存入数组
ret = fill(str[0]);//第一个不需要在前面加"."
for(int i=1;i {
temp = fill(str[i]);//补零
ret = ret + "." + temp;//合并
}
return ret;
}
public static void main(String[] args)
{
File f=new File("c://a.txt");//读原始文件
fileIO(f);
}
}

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7903402/viewspace-890208/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: Debug servlet
请登录后发表评论 登录
全部评论
  • 博文量
    3
  • 访问量
    26323