您的位置:首页 > 编程语言 > Java开发

一些基础Java习题

2014-11-16 10:24 176 查看
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());
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: