驼峰命名:
package comweixindto;import javautilDate;
public class Student {
private String name;
private char sex;
private int age;
private String phone;
private String majorName;
private String address;
private Date registDate;
public String getName() {
return name;
}
public void setName(String name) {
thisname = name;
}
public char getSex() {
return sex;
}
public void setSex(char sex) {
thissex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
thisage = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
thisphone = phone;
}
public String getMajorName() {
return majorName;
}
public void setMajorName(String majorName) {
thismajorName = majorName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
thisaddress = address;
}
public Date getRegistDate() {
return registDate;
}
public void setRegistDate(Date registDate) {
thisregistDate = registDate;
}
}
1判断身份z:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日。
答:我们可以用正则表达式来定义复杂的字符串格式,(\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用来判断是否为合法的15位或18位身份z号码。
因为15位和18位的身份z号码都是从7位到第12位为身份z为日期类型。这样我们可以设计出更精确的正则模式,使身份z号的日期合法,这样我们的正则模式可以进一步将日期部分的正则修改为[12][0-9]{3}[01][0-9][123][0-9],当然可以更精确的设置日期。
在jdk的javautilRegex包中有实现正则的类,Pattern和Matcher。以下是实现代码:
import javautilregexMatcher;
import javautilregexPattern;
public class RegexTest {
/
@param args
/
public static void main(String[] args) {
// 测试是否为合法的身份z号码
String[] strs = { "130681198712092019", "13068119871209201x",
"13068119871209201", "123456789012345", "12345678901234x",
"1234567890123" };
Pattern p1 = Patterncompile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");
for (int i = 0; i < strslength; i++) {
Matcher matcher = p1matcher(strs[i]);
Systemoutprintln(strs[i] + ":" + matchermatches());
}
Pattern p2 = Patterncompile("\\d{6}(\\d{8})"); // 用于提取出生日字符串
Pattern p3 = Patterncompile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分解为年月日
for (int i = 0; i < strslength; i++) {
Matcher matcher = p2matcher(strs[i]);
boolean b = matcherfind();
if (b) {
String s = matchergroup(1);
Matcher matcher2 = p3matcher(s);
if (matcher2find()) {
Systemout
println("生日为" + matcher2group(1) + "年"
+ matcher2group(2) + "月"
+ matcher2group(3) + "日");
}
}
}
}
}
1、编写一个程序,将atxt文件中的单词与btxt文件中的单词交替合并到ctxt文件中,atxt文件中的单词用回车符分隔,btxt文件中用回车或空格进行分隔。
答:
package cnitcast;
import javaioFile;
import javaioFileReader;
import javaioFileWriter;
public class MainClass{
public static void main(String[] args) throws Exception{
FileManager a = new FileManager("atxt",new char[]{'\n'});
FileManager b = new FileManager("btxt",new char[]{'\n',' '});
FileWriter c = new FileWriter("ctxt");
String aWord = null;
String bWord = null;
while((aWord = anextWord()) !=null ){
cwrite(aWord + "\n");
bWord = bnextWord();
if(bWord != null)
cwrite(bWord + "\n");
}
while((bWord = bnextWord()) != null){
cwrite(bWord + "\n");
}
cclose();
}
}
class FileManager{
String[] words = null;
int pos = 0;
public FileManager(String filename,char[] seperators) throws Exception{
File f = new File(filename);
FileReader reader = new FileReader(f);
char[] buf = new char[(int)flength()];
int len = readerread(buf);
String results = new String(buf,0,len);
String regex = null;
if(seperatorslength >1 ){
regex = "" + seperators[0] + "|" + seperators[1];
}else{
regex = "" + seperators[0];
}
words = resultssplit(regex);
}
public String nextWord(){
if(pos == wordslength)
return null;
return words[pos++];
}
}
1、编写一个程序,将d:\java目录下的所有java文件复制到d:\jad目录下,并将原来文件的扩展名从java改为jad。
(大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)
答:listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略。
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioFilenameFilter;
import javaioIOException;
import javaioInputStream;
import javaioOutputStream;
public class Jad2Java {
public static void main(String[] args) throws Exception {
File srcDir = new File("java");
if(!(srcDirexists() && srcDirisDirectory()))
throw new Exception("目录不存在");
File[] files = srcDirlistFiles(
new FilenameFilter(){
public boolean accept(File dir, String name) {
return nameendsWith("java");
}
}
);
Systemoutprintln(fileslength);
File destDir = new File("jad");
if(!destDirexists()) destDirmkdir();
for(File f :files){
FileInputStream fis = new FileInputStream(f);
String destFileName = fgetName()replaceAll("\\java$", "jad");
FileOutputStream fos = new FileOutputStream(new File(destDir,destFileName));
copy(fis,fos);
fisclose();
fosclose();
}
}
private static void copy(InputStream ips,OutputStream ops) throws Exception{
int len = 0;
byte[] buf = new byte[1024];
while((len = ipsread(buf)) != -1){
opswrite(buf,0,len);
}
}
}
由本题总结的思想及策略模式的解析:
1
class jad2java{
1 得到某个目录下的所有的java文件集合
11 得到目录 File srcDir = new File("d:\\java");
12 得到目录下的所有java文件:File[] files = srcDirlistFiles(new MyFileFilter());
13 只想得到java的文件: class MyFileFilter implememyts FileFilter{
public boolean accept(File pathname){
return pathnamegetName()endsWith("java")
}
}
2将每个文件复制到另外一个目录,并改扩展名
21 得到目标目录,如果目标目录不存在,则创建之
22 根据源文件名得到目标文件名,注意要用正则表达式,注意的转义。
23 根据表示目录的File和目标文件名的字符串,得到表示目标文件的File。
//要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。
24 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。
//方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。
}
分析listFiles方法内部的策略模式实现原理
File[] listFiles(FileFilter filter){
File[] files = listFiles();
//Arraylist acceptedFilesList = new ArrayList();
File[] acceptedFiles = new File[fileslength];
int pos = 0;
for(File file: files){
boolean accepted = filteraccept(file);
if(accepted){
//acceptedFilesListadd(file);
acceptedFiles[pos++] = file;
}
}
ArrayscopyOf(acceptedFiles,pos);
//return (File[])accpetedFilesListtoArray();
}
1、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉的半个”。
答:
首先要了解中文字符有多种编码及各种编码的特征。
假设n为要截取的字节数。
public static void main(String[] args) throws Exception{
String str = "我a爱中华abc我爱传智def';
String str = "我ABC汉";
int num = trimGBK(strgetBytes("GBK"),5);
Systemoutprintln(strsubstring(0,num) );
}
public static int trimGBK(byte[] buf,int n){
int num = 0;
boolean bChineseFirstHalf = false;
for(int i=0;i<n;i++)
{
if(buf[i]<0 && !bChineseFirstHalf){
bChineseFirstHalf = true;
}else{
num++;
bChineseFirstHalf = false;
}
}
return num;
}
1、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。
答:哈哈,其实包含中文字符、英文字符、数字字符原来是出题者放的烟雾d。
String content = “中国aadf的111萨bbb菲的zz萨菲”;
HashMap map = new HashMap();
for(int i=0;i<contentlength;i++)
{
char c = contentcharAt(i);
Integer num = mapget(c);
if(num == null)
num = 1;
else
num = num + 1;
mapput(c,num);
}
for(MapEntrySet entry : map)
{
systemoutprintln(entrygetkey() + “:” + entrygetValue());
}
估计是当初面试的那个学员表述不清楚,问题很可能是:
如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。
int engishCount;
int chineseCount;
int digitCount;
for(int i=0;i<strlength;i++)
{
char ch = strcharAt(i);
if(ch>=’0’ && ch<=’9’)
{
digitCount++
}
else if((ch>=’a’ && ch<=’z’) || (ch>=’A’ && ch<=’Z’))
{
engishCount++;
}
else
{
chineseCount++;
}
}
Systemoutprintln(……………);
System类位于javalang包下,不能被实例化,该类包含类一系列静态的成员和方法,其中包括标准的输入流对象in,输出流对象out,in是System类的一个静态成员,一个标准的输入流对象(InputStream),由系统自动创建,通过Systemin直接引用,可以从控制台读取输入信息。
以上就是关于一个java练习题,题目如下。希望能给个程序参考下(本人初学java)全部的内容,包括:一个java练习题,题目如下。希望能给个程序参考下(本人初学java)、求java 上机练习题、Java练习编写一个程序能够对学生对象进行插入、修改、删除、浏览、统计人数等功能。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)