Java基础习题,1,文件夹字母输出并且根据他的出现次数,大小进行排序输出。2,文件夹拷贝。3,自定义一段文本,并且生成图片文件。

9 篇文章 0 订阅
7 篇文章 0 订阅

目录

1,测试代码

 ArrayList我的数组代码

 2,文件夹拷贝

 3,自定义一段文本,并且生成图片文件


1,测试代码

package com.yan1;

import java.io.FileReader;
import java.io.Reader;

public class App {
	public static void main(String[] args) throws Exception {//文件异常抛出
		ArrayList list = new ArrayList();//一个可自己改变大小的数组,调用这个方法
		try (Reader r = new FileReader("data/calcCharNum.txt")) {//我的文件夹中的字符
			int kk = -1;
			while (true) {//循环语句
				kk = r.read();
				if (kk == -1)
					break;
                //进行空格,换行符不生成
				if (kk == '\r' || kk == '\n' || kk == '\t')
					kk = ' ';
				list.add((char) kk);
			}
			list.sort();
			list.show();
		}

	}

}

 ArrayList我的数组代码

package com.yan1;

public class ArrayList {
	private CharNum[] arr;
	private int count;

	public ArrayList() {
		this(10);
	}

	public ArrayList(int length) {
		arr = new CharNum[length];
	}

	public void show() {
		for (int i = 0; i < count; i++) {
			System.out.print(arr[i] + ",");
		}
	}

	public void sort() {
		for (int i = 1; i < count; i++) {
			for (int k = 0; k < count - i; k++) {
				if (arr[k].big(arr[k + 1])) {
					CharNum tmp = arr[k];
					arr[k] = arr[k + 1];
					arr[k + 1] = tmp;
				}
			}
		}
	}

	public void add(char ch) {
		int exists = indexOf(ch);
		if (exists >= 0) {
			arr[exists].addNum();
		} else {
			arr[count++] = new CharNum(ch);
			if (count >= arr.length)
				resize();
		}
	}

	private void resize() {
		CharNum[] res = new CharNum[arr.length * 3 / 2];
		for (int i = 0; i < count; i++)
			res[i] = arr[i];
		this.arr = res;
	}

	private int indexOf(char ch) {
		int pos = -1;
		for (int i = 0; i < count; i++) {
			CharNum cn = arr[i];
			if (cn.getCh() == ch) {
				pos = i;
				break;
			}
		}
		return pos;
	}
}

主方法Java

package com.yan1;

public class CharNum {

	private char ch;
	private int num;

	public CharNum(char ch) {
		this.ch = ch;
		this.num = 1;
	}

	@Override
	public String toString() {
		return ch + "(" + num + ")";
	}

	public char getCh() {
		return ch;
	}

	public void addNum() {
		this.num++;
	}

	public boolean big(CharNum charNum) {
		boolean res = false;
		if (this.num > charNum.num)
			res = true;
		else if (this.num == charNum.num) {
			res = this.ch > charNum.ch;
		}
		return res;
	}
}

 代码运行截图:

 2,文件夹拷贝

package com.yan2;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;

public class Test1 {
	public static void main(String[] args) throws Exception {//异常抛出
		try (Reader r = new FileReader("src/com/yan1/ArrayList.java"); Writer w = new FileWriter("data/out.txt")) {//拷贝这个文件夹的内容,并且复制到out.txt这个文本里
			for (int i = 0; i < 1024 * 1024; i++) {
				int kk = r.read();
				if (kk == -1)
					break;
				w.write(kk);
			}
		}
		System.out.println("结束!");//结束语句

	}

}

代码截图:

 

 3,自定义一段文本,并且生成图片文件

package com.yan2;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Random;

import javax.imageio.ImageIO;

public class Test2 {
	private static String source = "abcdrfghijklmnopqrstuvwxy";//初始化的字母

	public static void main(String[] args) throws Exception {
		BufferedImage buffer = new BufferedImage(120, 40, BufferedImage.TYPE_INT_RGB);
		Graphics g = buffer.getGraphics();
		g.setColor(Color.CYAN);
		g.fillRect(0, 0, 120, 40);
		g.setColor(Color.BLACK);
		g.drawRect(2, 2, 114, 34);
		String ss = generateCode(6);
		g.setColor(Color.red);
		g.setFont(new Font("黑体", Font.BOLD, 11));
		g.drawString(ss, 40, 26);
		g.dispose();
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		ImageIO.write(buffer, "jpeg", baos);
		baos.flush();
		InputStream is = new ByteArrayInputStream(baos.toByteArray());
		copyFile(is);
	}

	private static void copyFile(InputStream is) throws Exception {
        //并且生成一个图片的bb文件
		try (OutputStream os = new FileOutputStream("d:/bb.jpg");) {
			byte[] data = new byte[8192];
			int len = 0;
			while ((len = is.read(data)) > 0)
				os.write(data, 0, len);
		}
	}

	private static String generateCode(int len) {
		char[] res = new char[len];
		Random r = new Random();
		for (int i = 0; i < len; i++) {
			int pos = r.nextInt(source.length());
			res[i] = source.charAt(pos);
		}
		return new String(res);
	}

}

代码截图:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值