一些基础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());
    }

}

时间: 2024-11-06 16:18:54

一些基础Java习题的相关文章

[Java基础] Java线程复习笔记

先说说线程和进程,现代操作系统几乎无一例外地采用进程的概念,进程之间基本上可以认为是相互独立的,共享的资源非常少.线程可以认为是轻量级的进 程,充分地利用线程可以使得同一个进程中执行多种任务.Java是第一个在语言层面就支持线程操作的主流编程语言.和进程类似,线程也是各自独立的,有自 己的栈,自己的局部变量,自己的程序执行并行路径,但线程的独立性又没有进程那么强,它们共享内存,文件资源,以及其他进程层面的状态等.同一个进程内的 多个线程共享同样的内存空间,这也就意味着这些线程可以访问同样的变量和

Java基础--Java入门

IsCoder 标记: Java基础,Java环境配置 一.Java环境配置 Java Develop Kit(JDK安装) 系统环境变量设置(JAVA_HOME) Java源程序编辑工具 Java编译运行命令 运行经典的HelloWorld程序 1.1 JDK安装 JDK,就是甲骨文公司提供给我们的Java开发工具包,包括最常用的Javac.exe编译工具和Java.exe运行工具.需要指出的是,JDK中已经包含了JER(Java Runtime Environment,Java运行时环境),

Java基础--Java编程规范

IsCoder 标记: Java基础,Java编程规范 摘要:Java虽然没有强制性的编程规范,但是为了便于统一,Java有不成文的编程规范,为了形成良好的编程习惯,建议熟悉并遵守Java编程规范,提高代码的阅读性. 一.Java标识符 在任何语言中,都要自己的一套标识符规则.Java的标识符包括:Java关键字.Java特殊功能的标识符.合法的用户自定义标识符.其中,我们能改变的只有自定义的标识符,和大部分计算机编程语言一样,Java标识符原始只支持ASCII的编码,但是随着Java在世界的影

[Java基础] Java float保留两位小数或多位小数

方法1:用Math.round计算,这里返回的数字格式的. float price=89.89; int itemNum=3; float totalPrice=price*itemNum; float num=(float)(Math.round(totalPrice*100)/100);//如果要求精确4位就*10000然后/10000 方法2:用DecimalFormat 返回的是String格式的.该类对十进制进行全面的封装.像%号,千分位,小数精度.科学计算. float price=

[Java基础] Java对象内存结构

转载地址:http://www.importnew.com/1305.html 原文于2008年11月13日 发表, 2008年12月18日更新:这里还有一篇关于Java的Sizeof运算符的实用库的文章. 学C/C++出身的我,对Java有一点非常困惑,那就是缺乏计算对象占用内存大小的机制.而在C++中就可以通过sizeof运算符来获得基本类型以及类实例的大小.C和C++中的这个操作符对于指针运算.内存拷贝和IO操作都非常有用. Java中并没有一个类似的运算符.事实上,Java也不需要这种运

Java基础----Java中的String和StringBuffer

String和StringBuffer String是一个特殊的对象,一旦被初始化,就不会被改变.()指的是abc 不是变量 s1. String s1="abc"; s1是一个类类型变量,"abc"是一个对象. String s2=new String("abc"); s1和s2的区别: s1在字符串常量池中创建了一个abc字符串 s2在堆中创建了两个对象一个是默认对象一个是字符串对象. ==和equals的区别 ==比较的是地址,equals

Java基础----Java API中的常用类

System:描述系统的一些信息 preperties();获取系统信息 Properties prop =new System.getProperties(); 是hashtable 的子类.用map的方法去除该类集合中的元素.该集合中存储的都是字符串,没有泛型定义. String calue=(String)prop.get(obj); System.out.println(obj+":"+value); //如何在系统中自定义一些特有信息? System.setProperty(

零基础java培训靠谱吗?职场转行,零基础开始学Java开发靠谱吗?

学技术转行发展,是职场常见的提升方式,无论是在职充电还是为转行跳槽做准备,选择一个专业技能进行培训学习,都是非常可取的.在能力至上的今天,单凭学历已经不能成为入行敲门砖,特别是在互联网企业,通常在面试过程中就会考核技术能力,此外看你的项目作品,可见技术能力在招聘中是最具说服力的.华清远见教育职业规划专家表示零基础java培训靠谱吗,如果不清楚学什么技术更好,可以访问这里做职业规划,此外还可以通过试学来了解自己对技术课程的兴趣点. 华清远见教育开设的面向零基础人群提供的,从学习到就业一站式的浸入式

JavaWeb-08 (JavaWeb-Servlet基础&amp;java web之request/respone)

JavaWeb-08 JavaWeb-Servlet基础&java web之request/respone JavaWeb-Servlet基础 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 实验1:day0800servletConfig 工程架构: 工程下的web.xml文件内容 <?xml version="1.0" encoding="UTF