第二周总结

在这里插入图片描述
这个是这周的算法题
答案

package 算法;
import java.util.Scanner;
public class 字符串拼接 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		System.out.println(pingjie(str));
	}
	
	public static String pingjie(String str) {
		int len = 2;
		while(str.length()/len>0) {
			if(str.length()%len!=0) {
				len++;
				continue;
			}else {
				StringBuilder sb = new StringBuilder();
				for(int i=0;i<len;i++) {
					sb.append(str.substring(0, str.length()/len));
				}
				if(sb.toString().equals(str)) {
					return str.substring(0, str.length()/len);
				}
				len++;
			}
		}
		return "false";
	}
}

做题思路:
这个说到字符串拼接因为使用子字符串拼接的,查了查帮助文档找到用这个方法做
String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
然后就定义一个函数 因为他如果是对的话就一直一个字符串循环下去 所以用等分法处理
从二等分开始用要判断函数对len进行取余等于0的话就停止 之后创造一个存储的sb然后把满足条件的存进去 最后用equals方法进行比较如果正确返回则返回他的拼接字符串 不正确输出false。

BufferedReader

public class BufferedReaaderTest {
	public static void main(String[] args) throws Exception{
		//创建一个带有缓冲区的字符输入流
		/*
		FileReader fr = new FileReader("src\\IO\\BufferedReaderTest.java");//创建一个文件字符输入流
		BufferedReader br = new BufferedReader(fr); //将文件字符输入流包装成带有缓冲区的字符输入流
		*/

		//根据流出现的位置 流可以分为 包装流或者 处理流 和 节点流
		//FileReader fr 是一个节点流
		//BufferedReadeer br 是一个包装流 或者处理流
		BufferedReader br = new BufferedReader(new FileReader("src\\IO\\BufferedReaaderTest.java"));
		//开始读
		String temp = null;
		while((temp = br.readLine())!=null) {//br.readLine()方法读取一行 但是行尾不带换行符
			System.out.println(temp);//输出一行
		}
		
		//关闭
		//注意 关闭的时候只需要关闭最外层的包装流(这里有一个装饰者模式)
		br.close();
	}									
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190719173251532.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzOTY1OQ==,size_16,color_FFFFFF,t_70)}

用readLine()输出的行尾不带换行符会输出在一行 加上ln才会
用转换流把字节流转换成字符流

public static void main(String[] args) throws Exception{
		/*
		FileInputStream fis = new FileInputStream("src\\IO\\BufferedReaderTest2.java");
		//转换流   将字节流转换成字符流
		InputStreamReader isr = new InputStreamReader(fis);
		
		BufferedReader br = new BufferedReader(isr);
		*/
		//合并
		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("src\\IO\\BufferedReaderTest2.java")));
		
		String temp = null;
		while((temp = br.readLine())!=null) {
			System.out.println(temp);
		}
		
		br.close();
	}

之后学了新的键盘输入之前的键盘输入 遇到空格之后就会结束 用BufferedReader的键盘输入会输出一行

public static void main(String[] args) throws Exception {
		/*
		//以前的方式
		Scanner sc = new Scanner(System.in); //System.in是一个标准的输入流 默认接受键盘输入
		String str = sc.next();
		System.out.println("您输入了:"+str);
		*/
		//使用BufferedReader用来接受用户输入
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		//接受输入 每次都接收一行
		String str = br.readLine();
		System.out.println("您输入了:"+str);
		//关闭
		br.close();
	}

BufferedWriter的方法

	public static void main(String[] args) throws Exception{
		//创建一个带有缓冲区的字符输出流
		//BufferedWriter bw = new BufferedWriter(new FileWriter("src\\IO\\temp04"));
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("src\\IO\\temp04",true)));
		//开始写
		bw.write("MLXG!");
		
		//写入一个行分隔符
		bw.newLine();
		
		bw.write("恭送一代野王");
		
		bw.flush();
		
		bw.close();
	}

之后学BufferedReader和BufferedWriter的复制方法和以前一样
之后DateInputStream 和DateOutputStream比较特殊可以直接存储格式进去 但是读的时候只能用他读

public static void main(String[] args) throws Exception {
		DataInputStream dis = new DataInputStream(new FileInputStream("src\\IO\\temp05"));
		
		//读
		//注意要使用该流读取数据 必须提前知道改文件中数据存储格式,顺序
		//读的顺序和写入顺序相同
		byte b = dis.readByte();
		short s = dis.readShort();
		int i = dis.readInt();
		long l = dis.readLong();
		float f = dis.readFloat();
		double d = dis.readDouble();
		boolean flag = dis.readBoolean();
		char c = dis.readChar();
		
		System.out.println(b);
		System.out.println(s);
		System.out.println(i);
		System.out.println(l);
		System.out.println(f);
		System.out.println(d);
		System.out.println(flag);
		System.out.println(c);
		
		dis.close();
	}

第二周总结
这周看完IO之后 因为上周那个算法题感觉自己的泛型没看懂重新看了看泛型 虽然感觉看完感觉还是不咋会用 不过加深了一下记忆 之后写算法题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值