首页 > 代码库 > 一些基础Java习题
一些基础Java习题
1、 在文本文件book.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数
package iowork; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /**2014-11-15 * @author Administrator *1、 在文本文件book.txt中包含有很长篇幅的英语短文,编写程序要求统计文件的所有短文中包含英文字母“A”的个数 */ public class ReadTxt { public static void main(String[] args) { File file=new File("D:/book.txt"); // 创建文件 if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } try { FileInputStream fis=new FileInputStream(file); int c=fis.read(); int count=0; for(int i=0;i<file.length();i++){ char ch = (char)(fis.read()); //循环读取字符 if(ch=='A'){ count++; } // System.out.print(ch); } System.out.println("共"+count+"个A"); fis.close(); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("文件打开失败。"); e.printStackTrace(); } } }2、 把一个文件中的内容读出,把大写字母转换成小写字母后输出到另一个文件中
package iowork; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; /**2014-11-15 * @author Administrator *2、 把一个文件中的内容读出,把大写字母转换成小写字母后输出到另一个文件中 */ public class Work2 { public static void main(String[] args) throws IOException { String txtFilePath = "d:/book.txt";//原文件 FileInputStream fis = new FileInputStream(new File(txtFilePath)); InputStreamReader isr = new InputStreamReader(fis,"GBK"); BufferedReader reader = new BufferedReader(isr); String otherTxtFilePath = "d:/book_lower.txt";//保存小写的文件 FileOutputStream fos = new FileOutputStream(new File(otherTxtFilePath)); OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK"); BufferedWriter writer = new BufferedWriter(osw); String line = null; while((line = reader.readLine()) != null){ writer.append(line.toLowerCase()).append("\r\n"); } writer.close(); reader.close(); } }
3、 编写一个程序,检测本地是否存在保存保存学生的对象(反序列化),如果存在则在控制台输出学生信息(反序列化),如果没有,则先通过Student创建学生对象,将学生信息输出并保存到本地文件(序列化)中。
package iowork; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /**2014-11-15 * @author Administrator *3、 编写一个程序,检测本地是否存在保存保存学生的对象(反序列化),如果存在则在控制台输出学生信息(反序列化), *如果没有,则先通过Student创建学生对象,将学生信息输出并保存到本地文件(序列化)中。 */ public class Work3 implements Serializable{ private static final long serialVersionUID = 1L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException { /* * 文件为E盘下的student.txt文件 */ ObjectOutputStream output = null; Object obj = null; //如果捕获到异常,说明文件中没有存储任何对象 try{ ObjectInputStream input = new ObjectInputStream(new FileInputStream(new File("E:\\student.txt"))); obj = input.readObject(); } catch(Exception EOFException){ System.out.println("没有存储学生对象"); } System.out.println(obj); if(obj instanceof Work3){ //如果没有异常并且存储的为学生对象 Work3 student = (Work3)obj; System.out.println("已保存的学生的姓名为: " + student.getName()); }else { //如果没有异常但存储的不是学生对象 Work3 s = new Work3(); s.setName("张三"); output = new ObjectOutputStream(new FileOutputStream(new File("E:\\student.txt"))); output.writeObject(s); System.out.println("学生信息已保存"); } } }4、 请编写一个类,类名为SubThread, 是Thread 类的子类。该类中定义run()方法,方法中有一个 for循环,循环一共进行5次,循环体先在命令行显示该线程循环了第几次,然后休眠半秒的时间,循环结束后显示线程结束信息:线程名+finished。 编写一个Application程序,并在其中创建 Sub Thread类的三个线程对象T1,T2,T3,他们的名称分别为Frist,Second,Third,并启动这三个线程
package iowork; /**2014-11-15 * @author Administrator *4、 请编写一个类,类名为SubThread, 是Thread 类的子类。该类中定义run()方法,方法中有一个 for循环, *循环一共进行5次,循环体先在命令行显示该线程循环了第几次,然后休眠半秒的时间, *循环结束后显示线程结束信息:线程名+finished。 编写一个Application程序, *并在其中创建 Sub Thread类的三个线程对象T1,T2,T3, * 他们的名称分别为Frist,Second,Third,并启动这三个线程 */ public class SubThread extends Thread{ public void run(){ try { for(int i=0;i<5;i++){ System.out.println("该线程循环了"+i+"次"); Thread.sleep(500); System.out.println(i+"线程finished"); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { //三个线程 Thread t1 = new Thread(new SubThread()); //第一个自定义线程 Thread t2 = new Thread(new SubThread()); //第二个自定义线程 Thread t3 = new Thread(new SubThread()); //第二个自定义线程 t1.start(); t2.start(); t3.start(); } }
5.多线程求素数
package work5; public class CalcPrime { public static void main(String[] args) { Thread1 t1 = new Thread1(); Thread2 t2 = new Thread2(); Thread3 t3 = new Thread3(); t1.start(); t2.start(); t3.start(); } } class Thread1 extends Thread { Thread4 t4 = Thread4.getInstance(); public void run() { String str1 = PrimeHandler.getInstance().getPrimeNums(1000, 10000); t4.accept(str1); } } class Thread2 extends Thread { Thread4 t4 = Thread4.getInstance(); public void run() { String str2 = PrimeHandler.getInstance().getPrimeNums(10001, 20000); t4.accept(str2); } } class Thread3 extends Thread { Thread4 t4 = Thread4.getInstance(); public void run() { String str3 = PrimeHandler.getInstance().getPrimeNums(20001, 30000); t4.accept(str3); } } class Thread4 extends Thread { private static int isEnd = 0; private static Thread4 t4; private Thread4() { } public static Thread4 getInstance() { if (t4 == null) { t4 = new Thread4(); } return t4; } public void run() { while (isEnd == 3) { PrintHandler.destroy(); } } public void accept(String content) { PrintHandler.getInstence("xyz.dat").printString(content); isEnd++; } }
package work5; public class PrimeHandler { private static PrimeHandler pHandler; private PrimeHandler() { } public static synchronized PrimeHandler getInstance() { if (pHandler == null) { pHandler = new PrimeHandler(); } return pHandler; } private static boolean isPrimeNum(int n) { boolean hasDivisor = false; for (int i = 2; i < n; i++) { if (n % i == 0) { hasDivisor = true; } } if (hasDivisor) { return false; } else { return true; } } public synchronized String getPrimeNums(int from, int to) { StringBuilder strBuilder = new StringBuilder(); int tag = 1; for (int i = from; i <= to; i++) { if (isPrimeNum(i)) { strBuilder.append(i).append(","); if (tag % 15 == 0) { strBuilder.append('\n'); } tag++; } } return strBuilder.toString(); } } package work5; public class PrimeHandler { private static PrimeHandler pHandler; private PrimeHandler() { } public static synchronized PrimeHandler getInstance() { if (pHandler == null) { pHandler = new PrimeHandler(); } return pHandler; } private static boolean isPrimeNum(int n) { boolean hasDivisor = false; for (int i = 2; i < n; i++) { if (n % i == 0) { hasDivisor = true; } } if (hasDivisor) { return false; } else { return true; } } public synchronized String getPrimeNums(int from, int to) { StringBuilder strBuilder = new StringBuilder(); int tag = 1; for (int i = from; i <= to; i++) { if (isPrimeNum(i)) { strBuilder.append(i).append(","); if (tag % 15 == 0) { strBuilder.append('\n'); } tag++; } } return strBuilder.toString(); } }
6.遍历文件夹内容
package iowork; import java.io.File; public class Work6 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("C:\\迅雷下载\\"); printFile(file,0); } /** * 输出文件树 * @param file * @param l */ public static void printFile(File file,int l){ String str = new String(); //生成补充空格 for(int i=0;i<l;i++){ str +=" " ; } //先输出自己后输出子目录或文件 formatPrint(file,str); if(file.isDirectory()){ //判断是否为目录 File[] files = file.listFiles(); //获取目录下文件列表 for(File f:files){//递归输出文件 printFile(f,l+3); } } } /** * 格式化输出文件 * @param file * @param str */ public static void formatPrint(File file,String str){ //先输出文件 String[] names = file.getName().split("[.]"); System.out.println(str+file.getName() + " "+names[names.length-1]+" 文件" + " "+file.length()); } }
一些基础Java习题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。