A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

袁志娜

高级黑马

  • 黑马币:373

  • 帖子:697

  • 精华:0

© 袁志娜 高级黑马   /  2016-8-31 18:23  /  1896 人查看  /  23 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 键盘每录入一次数据就将录入的数据在文件中存放成一行
2. 文件中最多存放5
3.根据数据存放的时间上下排序,最早录入的在最后一行,最后录入的数据在文件的第一行

23 个回复

正序浏览
学习学习!
回复 使用道具 举报
好好看看,不会
回复 使用道具 举报
第三个个的核心科技应该是1,创建输入输出流对象                         2,创建集合对象                         3,将读到的数据存储在集合中                         4,倒着遍历集合将数据写到文件上                         5,关流
回复 使用道具 举报
先mark一下,白天再来研究
回复 使用道具 举报
自强不息,努力向前
回复 使用道具 举报
梦想的小草 发表于 2016-9-3 22:43
恩 ,但是这样写得的话会产生另一个问题,不过在考试的时候没时间想那么多,就真的是这样录入5个 ...

加个Q号吧,我的:974936237,细聊
回复 使用道具 举报
天河边吃紫英 发表于 2016-9-3 22:39
表示看不太懂,还要继续学习的节奏

加油,如果可以建议走社招,这样比较简单
回复 使用道具 举报
袁志娜 发表于 2016-9-3 22:38
我感觉这样还可以,如果你想继续输入的话,就要把最后输入的值给remove出去,现在能这样做已经很棒了 ...

恩 ,但是这样写得的话会产生另一个问题{:2_40:},不过在考试的时候没时间想那么多,就真的是这样录入5个了,你考试黑马了吗?我过几天也要考了,好紧张呀
回复 使用道具 举报
表示看不太懂,还要继续学习的节奏
回复 使用道具 举报
梦想的小草 发表于 2016-9-3 22:29
没有!我好多都不会,这题应该不是这么写的,应该让一直循环,一直能输入才对,只是存5句而已,我今天从 ...

我感觉这样还可以,如果你想继续输入的话,就要把最后输入的值给remove出去,现在能这样做已经很棒了
回复 使用道具 举报
袁志娜 发表于 2016-9-3 22:24
谢谢,思路逻辑感好强

没有!我好多都不会,这题应该不是这么写的,应该让一直循环,一直能输入才对,只是存5句而已,我今天从新写了一下,还有一个小问题没来得及解决{:2_33:}
回复 使用道具 举报
梦想的小草 发表于 2016-9-2 22:28
public class Text_03 {

        public static void main(String[] args) {

谢谢,思路逻辑感好强
回复 使用道具 举报
public class Text_03 {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                try {
                        BufferedWriter bw = new BufferedWriter(new FileWriter("data"));
                        BufferedReader br = new BufferedReader(new FileReader("data"));
                        StringBuilder sb = new StringBuilder();
                        int a = 1;
                        while (a <= 5) {
                                System.out.println("请输入字第" + (a++) + "个符串:");
                                String str = sc.nextLine();
                                sb.append(str + " ");
                                }
                        String[] sArr = sb.toString().split(" ");
                        for (int i = sArr.length - 1; i >= 0; i--) {
                                bw.write(sArr[i]);
                                bw.newLine();
                        }
                        bw.close();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

        }

}
回复 使用道具 举报
gsa798780633 发表于 2016-9-2 00:46
/*优点是实时更新,每输入一次数据就会更新文本
缺点是每次都创建流,消耗资源*/
import java.io.BufferedR ...

这个可以有
回复 使用道具 举报
zhangsen89 发表于 2016-9-1 19:11
* 分析:
*        像FileWriter这些一般文件输出流,
*        每次使用write方法,只能在文件内容末尾写入,

不是的,问题要求不是只输入五次,可以一直输入,最后存的时候存五行,我就是审错题了,.............
回复 使用道具 举报
/*优点是实时更新,每输入一次数据就会更新文本
缺点是每次都创建流,消耗资源*/
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.LinkedList;
import java.util.Scanner;

public class Test {
public static void main(String[] args) throws Exception {
        Scanner scanner=new Scanner(System.in);
        //存放要写入的数据
        LinkedList<String>list=new LinkedList<String>();
//不断从键盘读入数据
while (true) {
BufferedReader br=new BufferedReader(new FileReader(new File("aaa.txt")));
String len;
//读取已经存放的数据,放入到list中
while ((len=br.readLine())!=null) {
                list.add(len);
}
br.close();
//因为文本最多保存5行,继续写入会覆盖最早写入的数据
if (list.size()==5) {
//如果文件已经有了5行,就把最早的数据删了
        list.remove(4);
}
//把从键盘得到的数据插入到表头
        list.add(0,scanner.nextLine());
BufferedWriter br=new BufferedWriter(new FileWriter(new File("aaa.txt")));
//遍历list并写入到文件中
while (list.size()>0) {
        br.write(list.remove(0));
        br.newLine();
}
br.close();
}
}
}
回复 使用道具 举报
zhangsen89 发表于 2016-9-1 19:11
* 分析:
*        像FileWriter这些一般文件输出流,
*        每次使用write方法,只能在文件内容末尾写入,

你这个写得好,insert(index,String)用的很精彩,我昨天把这个问题想复杂了。
回复 使用道具 举报
怎么实现的?第三个尤其是。
回复 使用道具 举报
* 分析:
*        像FileWriter这些一般文件输出流,
*        每次使用write方法,只能在文件内容末尾写入,
*        不能添加到文件开头。
*
*        即便是RandomAccessFile文件随机访问流,
*        可以用seek(0)方法,将指针指到文件开头。
*        但是执行其write方法是从文件开头覆盖,而不是添加!
*
*        所以对我们一般的新学员来说
*        最简单的解决方案,当然还是使用一般的FileWriter
*        不过得换一下思路:
*        在5次输入循环中,每次键盘录入,
*        就将录入内容用insert(index,String)方法添加到StringBuilder第一行
*        每次循环创建一次FileWriter对象,
*        将StringBuilder内容写入到"out.txt"文件中
*        每次写完后,关闭流,下次循环再重新创建FileWriter对象
*        如此完全可以符合提议要求,代码很简单


[Java] 纯文本查看 复制代码
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Test02 {

	public static void main(String[] args) throws IOException {
		//创建Scanner键盘录入对象
		Scanner sc = new Scanner(System.in);
		//声明字符文件输出流FileWriter
		FileWriter fw = null;
		//创建StringBuilder对象
		StringBuilder sb = new StringBuilder();
		//创建键盘录入接受字符串str
		String str = null;
		
		//for循环5次,键盘录入写入文件5次
		for (int i = 0; i < 5; i++) {
			//打印键盘录入提示
			System.out.println("请输入第" + (i + 1) + "行文本:");
			//获取键盘录入字符串 + 换行符
			str = sc.next() + "\r\n"; 
			//调用insert方法,将刚录入的字符串,添加到StringBuilder对象第一行
			sb.insert(0, str);
			//创建FileWriter对象 输出"out.txt"文件
			fw = new FileWriter("out.txt");
			//将StringBuilder对象内容写入"out.txt"文件
			fw.write(sb.toString());
			//刷新FileWriter流
			fw.flush();
			//关闭FileWriter流
			fw.close();
		}
		
		//关闭Scanner键盘录入对象
		sc.close();
	}

}


回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马