「java上机题库」java程序设计题解与上机指导pdf

博主:adminadmin 2023-01-10 00:15:06 889

本篇文章给大家谈谈java上机题库,以及java程序设计题解与上机指导pdf对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

求java 上机练习题

1.判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写程序提出其中的年月日。

答:我们可以用正则表达式来定义复杂的字符串格式,(\d{17}[0-9a-zA-Z]|\d{14}[0-9a-zA-Z])可以用来判断是否为合法的15位或18位身份证号码。

因为15位和18位的身份证号码都是从7位到第12位为身份证为日期类型。这样我们可以设计出更精确的正则模式,使身份证号的日期合法,这样我们的正则模式可以进一步将日期部分的正则修改为[12][0-9]{3}[01][0-9][123][0-9],当然可以更精确的设置日期。

在jdk的java.util.Regex包中有实现正则的类,Pattern和Matcher。以下是实现代码:

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class RegexTest {

/**

* @param args

*/

public static void main(String[] args) {

// 测试是否为合法的身份证号码

String[] strs = { "130681198712092019", "13068119871209201x",

"13068119871209201", "123456789012345", "12345678901234x",

"1234567890123" };

Pattern p1 = Pattern.compile("(\\d{17}[0-9a-zA-Z]|\\d{14}[0-9a-zA-Z])");

for (int i = 0; i strs.length; i++) {

Matcher matcher = p1.matcher(strs[i]);

System.out.println(strs[i] + ":" + matcher.matches());

}

Pattern p2 = Pattern.compile("\\d{6}(\\d{8}).*"); // 用于提取出生日字符串

Pattern p3 = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");// 用于将生日字符串进行分解为年月日

for (int i = 0; i strs.length; i++) {

Matcher matcher = p2.matcher(strs[i]);

boolean b = matcher.find();

if (b) {

String s = matcher.group(1);

Matcher matcher2 = p3.matcher(s);

if (matcher2.find()) {

System.out

.println("生日为" + matcher2.group(1) + "年"

+ matcher2.group(2) + "月"

+ matcher2.group(3) + "日");

}

}

}

}

}

1、编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔。

答:

package cn.itcast;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

public class MainClass{

public static void main(String[] args) throws Exception{

FileManager a = new FileManager("a.txt",new char[]{'\n'});

FileManager b = new FileManager("b.txt",new char[]{'\n',' '});

FileWriter c = new FileWriter("c.txt");

String aWord = null;

String bWord = null;

while((aWord = a.nextWord()) !=null ){

c.write(aWord + "\n");

bWord = b.nextWord();

if(bWord != null)

c.write(bWord + "\n");

}

while((bWord = b.nextWord()) != null){

c.write(bWord + "\n");

}

c.close();

}

}

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)f.length()];

int len = reader.read(buf);

String results = new String(buf,0,len);

String regex = null;

if(seperators.length 1 ){

regex = "" + seperators[0] + "|" + seperators[1];

}else{

regex = "" + seperators[0];

}

words = results.split(regex);

}

public String nextWord(){

if(pos == words.length)

return null;

return words[pos++];

}

}

1、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。

(大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)

答:listFiles方法接受一个FileFilter对象,这个FileFilter对象就是过虑的策略对象,不同的人提供不同的FileFilter实现,即提供了不同的过滤策略。

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.FilenameFilter;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

public class Jad2Java {

public static void main(String[] args) throws Exception {

File srcDir = new File("java");

if(!(srcDir.exists() srcDir.isDirectory()))

throw new Exception("目录不存在");

File[] files = srcDir.listFiles(

new FilenameFilter(){

public boolean accept(File dir, String name) {

return name.endsWith(".java");

}

}

);

System.out.println(files.length);

File destDir = new File("jad");

if(!destDir.exists()) destDir.mkdir();

for(File f :files){

FileInputStream fis = new FileInputStream(f);

String destFileName = f.getName().replaceAll("\\.java$", ".jad");

FileOutputStream fos = new FileOutputStream(new File(destDir,destFileName));

copy(fis,fos);

fis.close();

fos.close();

}

}

private static void copy(InputStream ips,OutputStream ops) throws Exception{

int len = 0;

byte[] buf = new byte[1024];

while((len = ips.read(buf)) != -1){

ops.write(buf,0,len);

}

}

}

由本题总结的思想及策略模式的解析:

1.

class jad2java{

1. 得到某个目录下的所有的java文件集合

1.1 得到目录 File srcDir = new File("d:\\java");

1.2 得到目录下的所有java文件:File[] files = srcDir.listFiles(new MyFileFilter());

1.3 只想得到.java的文件: class MyFileFilter implememyts FileFilter{

public boolean accept(File pathname){

return pathname.getName().endsWith(".java")

}

}

2.将每个文件复制到另外一个目录,并改扩展名

2.1 得到目标目录,如果目标目录不存在,则创建之

2.2 根据源文件名得到目标文件名,注意要用正则表达式,注意.的转义。

2.3 根据表示目录的File和目标文件名的字符串,得到表示目标文件的File。

//要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。

2.4 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。

//方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。

}

分析listFiles方法内部的策略模式实现原理

File[] listFiles(FileFilter filter){

File[] files = listFiles();

//Arraylist acceptedFilesList = new ArrayList();

File[] acceptedFiles = new File[files.length];

int pos = 0;

for(File file: files){

boolean accepted = filter.accept(file);

if(accepted){

//acceptedFilesList.add(file);

acceptedFiles[pos++] = file;

}

}

Arrays.copyOf(acceptedFiles,pos);

//return (File[])accpetedFilesList.toArray();

}

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(str.getBytes("GBK"),5);

System.out.println(str.substring(0,num) );

}

public static int trimGBK(byte[] buf,int n){

int num = 0;

boolean bChineseFirstHalf = false;

for(int i=0;in;i++)

{

if(buf[i]0 !bChineseFirstHalf){

bChineseFirstHalf = true;

}else{

num++;

bChineseFirstHalf = false;

}

}

return num;

}

1、有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。

答:哈哈,其实包含中文字符、英文字符、数字字符原来是出题者放的烟雾弹。

String content = “中国aadf的111萨bbb菲的zz萨菲”;

HashMap map = new HashMap();

for(int i=0;icontent.length;i++)

{

char c = content.charAt(i);

Integer num = map.get(c);

if(num == null)

num = 1;

else

num = num + 1;

map.put(c,num);

}

for(Map.EntrySet entry : map)

{

system.out.println(entry.getkey() + “:” + entry.getValue());

}

估计是当初面试的那个学员表述不清楚,问题很可能是:

如果一串字符如"aaaabbc中国1512"要分别统计英文字符的数量,中文字符的数量,和数字字符的数量,假设字符中没有中文字符、英文字符、数字字符之外的其他特殊字符。

int engishCount;

int chineseCount;

int digitCount;

for(int i=0;istr.length;i++)

{

char ch = str.charAt(i);

if(ch=’0’ ch=’9’)

{

digitCount++

}

else if((ch=’a’ ch=’z’) || (ch=’A’ ch=’Z’))

{

engishCount++;

}

else

{

chineseCount++;

}

}

System.out.println(……………);

java程序设计上机题,求答案

public class Point {

int x;

int y;

public Point() {

}

public Point(int x, int y) {

this.x = x;

this.y = y;

}

public Point(int x) {

this.x = x;

this.y = x;

}

public double distance() {//求当前点到原点的距离

return Math.sqrt((x * x + y * y));

}

public double distance(int x1, int y1) {//求当前点到(x1,y1)的距离

return Math.sqrt((x-x1)*(x-x1) + (y-y1) * (y-y1));

}

public double distance(Point other){

int x2 = other.x;

int y2 = other.y;

return Math.sqrt((x-x2)*(x-x2) + (y-y2) * (y-y2));

}

}

Java 上机题目

public class BookTest{ public static void main(String[] args){ Book book = new Book("Cook book",150); book.detail(); }} class Book{ private String title; private int pageNum; public Book(String title,int pageNum){ this.title = title; this.judgePage(pageNum); } public String getTitle(){ return this.title; } public void setTitle(String title){ this.title=title; }public int getPageNum(){ return this.pageNum; }public void setPageNum(int pageNum){ this.pageNum=this.judgePage(pageNum);}private int judgePage(int pageNum){ if(pageNum200){ System.out.println("页数["+pageNum+"]不能小于200"); pageNum = 200;

} return pageNum;}public void detail(){ System.out.println("书名:"+this.title+"\n页数:"+this.pageNum);}}

关于java上机题库和java程序设计题解与上机指导pdf的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。