IO习题

1.Java实现将九九乘法表输入到文本文件

public class Test1 {

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

System.setOut(new PrintStream("table99.txt"));//重定项屏幕输出到ps对象中

for (int i = 1; i < 10; i++) {

for (int j = 1; j <= i; j++) {

System.out.print(j + " * " + i + " = " + i * j +"\t");

}

System.out.println();

}

}

}

2.从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,

并按重复次数排序,如果次数相同按姓名字母排序:

1,zhangsan,28

2,lisi,35

3,zhangsan,28

4,wangwu,35

5,zhangsan,28

6,lisi,35

7,zhaoliu,28

8,tianqi,35

class NameBean implements Comparable<NameBean> {

// 名字

private String name;

// 出现次数

private Integer count;

public NameBean(String name, Integer count) {

super();

this.name = name;

this.count = count;

}

public String toString() {

return name + " 出现 " + count;

}

public int compareTo(NameBean bean) {

if (this.count > bean.count) {

return 1;

} else if (this.count < bean.count) {

return -1;

} else {

return this.name.compareTo(bean.name);

}

}

}

public class Test2 {

public static void readFile(File file) throws IOException {

Scanner sc = new Scanner(file);

Map<String, Integer> nameMap = new TreeMap<String, Integer>();

// 名字和重复次数的集合

Set<NameBean> nameSet = new TreeSet<NameBean>();

while (sc.hasNextLine()) {

String line = sc.nextLine();

String[] info = line.split(",");

String name = info[1];

if (nameMap.containsKey(name)) {

int count = nameMap.get(name);

nameMap.put(name, count + 1);

} else {

nameMap.put(name, 1);

}

}

Set<Map.Entry<String, Integer>> entrys = nameMap.entrySet();

Iterator<Map.Entry<String, Integer>> it = entrys.iterator();

while (it.hasNext()) {

Map.Entry<String, Integer> entry = it.next();

nameSet.add(new NameBean(entry.getKey(), entry.getValue() - 1));

}

System.out.println(nameSet);

}

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

readFile(new File("student.txt"));

}

}

3.编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,

并将原来文件的扩展名从.java改为.jad。

public class Test3 {

public static void copy(File src, File dest) throws IOException {

if (src == null || !src.exists()) {

System.out.println("源不存在");

return;

}

if (dest != null && !dest.exists()) {

dest.mkdir();

}

File[] fs = src.listFiles(new FilenameFilter() {

public boolean accept(File dir, String name) {

return name.endsWith(".java");

}

});

OutputStream out = null;

InputStream in = null;

for (File f : fs) {

String oldName = f.getName();

StringBuilder newName = new StringBuilder();

newName.append(oldName.substring(0, oldName.lastIndexOf(‘.‘))).append(".jad");

in = new FileInputStream(f);

out = new FileOutputStream(dest.getPath() + File.separator

+ newName.toString());

byte[] buff = new byte[1024];

int len = 0;

while ((len = in.read(buff)) != -1) {

out.write(buff, 0, len);

}

out.close();

in.close();

}

}

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

File src = new File("d:/java");

File dest = new File("d:/jad");

copy(src, dest);

}

}

4.从键盘读入一行字符串,这行字符串内容类似如下:"2,10,1,22,19,30";

输入升序排序或者降序排序,然后根据输入打印排序结果

public class Test4 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

sc.useDelimiter("\n");

Set<Integer> set = new TreeSet<Integer>(new Comparator<Integer>() {

public int compare(Integer o1, Integer o2) {

return o1.compareTo(o2) * -1;

}

});

while(sc.hasNextLine()){

set.clear();

String ele  = sc.nextLine();

String[] arr = ele.split(",");

for (String s : arr) {

set.add(new Integer(s));

}

System.out.println("排序后= "+set);

}

}

}

5.删除一个目录(注意:要删除目录必须删除目录下的文件和子目录)

public class Test5 {

public static void delDir(File dir) {

if (dir == null || !dir.exists()) {

return;

}

if (dir.isFile()) {

dir.delete();

} else {

File[] fs = dir.listFiles();

for (File f : fs) {

delDir(f);

if (dir.list().length == 0) {// 空目录

dir.delete();

}

}

}

}

public static void main(String[] args) {

File dir = new File("D:/jad");

delDir(dir);

}

}

6.将一个文件中的内容倒序(不允许用第二个文件)

public class Test6 {

public static void reverse(String file) {

int total = 0;// 读取的总字节数

char[] buff = new char[30];

try (Reader in = new FileReader(file);) {

int len = 0;

while ((len = in.read(buff)) != -1) {

total += len;

}

} catch (Exception e) {

}

//==============

try (Writer out = new FileWriter(file);) {

for (int i = total - 1; i >= 0; i--) {

out.write(buff[i]);

}

} catch (Exception e) {

}

}

public static void main(String[] args) {

// start哥曾信佛但佛信曾哥end

reverse("out.txt");

}

}

7.public class GuessDemo {

/**

* 1.系统先一个生成[1,100]之间的随机数; 2.程序得到键盘录入的数据,要做检查

*/

public static void guess() {

Integer ran = new Random().nextInt(100) + 1;// [1,100]

System.out.println("随机数= " + ran);

Scanner sc = new Scanner(System.in);

while (sc.hasNextLine()) {

String input = sc.nextLine();

// 检查input是否由数字组成

if (!input.matches("\\d+")) {

System.out.println("亲,请输入数字");

} else {

Integer num = new Integer(input);

if (num > 100 || num < 1) {

System.out.println("亲,请输入的[1,100]之间的数字");

} else {

// [1,100];

switch (num.compareTo(ran)) {

case 1:

// 此时num> ran

System.out.println("亲,你输入大了");

break;

case -1:

System.out.println("亲,你输入小了");

break;

default:

System.out.println("亲,恭喜你中奖了");

return;

}

}

}

}

}

public static void main(String[] args) {

guess();

}

}

时间: 2024-10-18 15:39:02

IO习题的相关文章

《七周七语言:理解多种编程范型》のIo课后习题答案

哎,因为上周忙着写OAuth2.0服务端框架草稿 ,耽误了一周学习Io Language了. 本篇习题解答是接着 <七周七语言:理解多种编程范型>のRuby课后习题答案 Io是原型语言,类似于JavaScript,并不区别类和对象,所有的东东都是对象,对象的数据结构就是由键值表来维护的(在Io中就是所谓的槽),通过各种消息传递给对象来实现打印输出,复制对象等功能.因为语法非常简单(也木有语法糖),所以你可以尽情构建自己的库和功能. 第一天: 1. 对1+1求值,然后对1+"one&q

IO流+数据库课后习题

1,读取 试题文件 然后做题算分 File file1=new File("D:\\file","test.txt"); try{ FileReader in1=new FileReader(file1); BufferedReader in2=new BufferedReader(in1); String s; int count=0; for(;(s=in2.readLine())!=null;){ if(!s.startsWith("-")

《C++primer》v5 第8章 IO库 读书笔记 习题答案

8.1.8.2 这一章不咋会啊.. istream &read(istream &is) { int a; auto old_state=is.rdstate(); is.clear(); is>>a; is.setstate(old_state); return is; } int main() { read(cin); return 0; } 8.3 读到eof或错误类型的时候 8.4 #include<fstream> using namespace std;

C#习题大全

C#习题大全 1.String str=new String("a")和String str = "a"有什么区别? String str = "a"; 这个只是一个引用,内存中如果有“a"的话,str就指向它,如果没有才创建如后还用到"a"这个字符串的话并且是这样用: String str1 = "a"; String str2 = "a"; String str2 = &q

Linux系统开发 2 文件IO open() close() read() write() perror() lseek() fcntl() ioctl()

[本文谢绝转载,原文来自http://990487026.blog.51cto.com] 大纲 Linux系统开发 man 文档的使用 文件IO open() 创建文件,指定权限位 open() 接收参数 创建文件 open() 传两个参数 第三个参数从内存取垃圾值 write()函数 向文件写数据 write()函数的覆盖操作 open()函数文件的追加 open() 创建文件,如果文件已经存在,就报错 测试一个程序最多能创建1021个文件,3个STDIN STDOUT STDERR已经存在了

[华为机试练习题]24.删除链表中的反复节点、剩余节点逆序输出

题目 描写叙述: 题目描写叙述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容反复的节点(反复的节点所有删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容反复的节点(反复的节点所有删除).剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]仅仅须要完毕该函数功

算法-蓝桥杯习题

蓝桥杯习题 习题更新ing...... 入门训练(4题) 1 /* 2 入门训练 A+B问题 3 4 问题描述 5 输入A.B,输出A+B. 6 说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标. 7 输入格式 8 输入的第一行包括两个整数,由空格分隔,分别表示A.B. 9 说明:“输入格式”是描述在测试你的程序时,所给的输入一定满足的格式. 10 11 做题时你应该假设所给的输入是一定满足输入格式的要求的,所以你不需要对输入的格式进行检查.多余的格式检查可能会适得其反,使用你的程

[华为机试练习题]24.删除链表中的重复节点、剩余节点逆序输出

题目 描述: 题目描述: 输入一个不带头节点的单向链表(链表的节点数小于100),删除链表中内容重复的节点(重复的节点全部删除),剩余的节点逆序倒排. 要求实现函数: void vChanProcess(strNode * pstrIn,strNode * pstrOut); [输入] pstrIn:输入一个不带头节点的单向链表 [输出] pstrOut:删除内容重复的节点(重复的节点全部删除),剩余节点逆序输出(不带头节点,链表第一个节点的内存已经申请). [注意]只需要完成该函数功能算法,中

读书笔记之:C++ Primer (第4版)及习题(ch01-ch11) [++++]

读书笔记之:C++ Primer (第4版)及习题(ch01-ch11) [++++] 第2章 数据和基本类型 1. 整型 2. 习题:左值和右值 3. C++关键字/保留字和操作符替代值 4. 声明,定义, 初始化和赋值是不同的概念. 声明是说明一个变量的存在,不会为变量进行内存空间的分配. 定义是说明一个变量的存在,同时为这个变量分配对应的内存空间. 初始化就是在进行变量定义的时候在所分配的内存空间中同时填入有意义的值.如果不进行初始化的话,变量虽然有对应的内存空间,但是内存空间中对应 的内