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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

2黑马币
需求:产生10个1~100的随机数,并把其中的奇数存入ArrayList中,还要从小到大排序, 最后输出到"number.txt"
代码:部分代码如下,望哪位大神可以解决输出到文件的这个步骤(原谅我悬赏少,因为我也缺技术分)
public class ArrayListDemo {
        public static void main(String[] args) throws IOException {
                // 创建集合对象,创建Random对象
                ArrayList<Integer> al = new ArrayList<Integer>();
                Random r = new Random();
                // 存入10个1-100的随机数
                for (int i = 0; i < 10; i++) {

                        int num = r.nextInt(100) + 1;
                        // 判斷是否是奇數,是,則添加到集閤中
                        if (num % 2 != 0) {
                                al.add(num);
                        }
                }


                // 使用冒泡排序对集合进行排序
                for (int x = 0; x < al.size() - 1; x++) {
                        for (int y = 0; y < al.size() - 1 - x; y++) {
                                if (al.get(y) > al.get(y + 1)) {
                                        // 进行数据交换
                                        int temp = al.get(y);
                                        al.set(y, al.get(y + 1));
                                        al.set(y + 1, temp);
                                }
                        }
                }



                //封裝目的地
                BufferedWriter bw = new BufferedWriter(new FileWriter
                                ("D:\number.txt"));
                     ........
        }


}             

最佳答案

查看完整内容

BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt")); for(Integer i :al){ String s = i.toString(); s = s+" "; bw.write(s); bw.flush(); } 写入文本的可以这样写

评分

参与人数 3黑马币 +13 收起 理由
怡宝矿泉水 + 6 这么简单的问题,,,不过还好,你能坚持,现在.
lzh2015 + 4 认认真真真好,现在玩起来我都不行了,加油.
嘉嘉 + 3 加油

查看全部评分

19 个回复

倒序浏览
BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt"));
      
       for(Integer i :al){
               String s = i.toString();
               s = s+" ";
               bw.write(s);
               bw.flush();
       }

写入文本的可以这样写
回复 使用道具 举报
额 遍历出来一行一行弄进去啊 write()    括号里面写一个字符串 int转字符串你知道的啊  记得每循环一次 加上个newLine 和 flush
回复 使用道具 举报
天之饺子 发表于 2015-10-3 00:41
额 遍历出来一行一行弄进去啊 write()    括号里面写一个字符串 int转字符串你知道的啊  记得每循环一次 加 ...

不行啊,实在不知道在哪里找数据源
回复 使用道具 举报
把Integer类型转成String类型,然后在遍历的时候写入就可以了。
回复 使用道具 举报
在唱歌 发表于 2015-10-3 00:51
把Integer类型转成String类型,然后在遍历的时候写入就可以了。

做出来了
回复 使用道具 举报
天之饺子 发表于 2015-10-3 00:41
额 遍历出来一行一行弄进去啊 write()    括号里面写一个字符串 int转字符串你知道的啊  记得每循环一次 加 ...

做出来了,在遍历的时候,不过我用的是:在遍历的时候,将Integer-->String,这样我才懂得如何做
回复 使用道具 举报
就是像上面那个回答的那样也行啊   我记得我给你总结过那个类型转换的方法啊  所以就像上面那位兄弟回答的一样也行啊
回复 使用道具 举报
BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt"));                for(Integer i :al){                String s = i.toString();                s = s+" ";                bw.write(s);                bw.flush();        }
回复 使用道具 举报
BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt"));                for(Integer i :al){                String s = i.toString();                s = s+" ";                bw.write(s);                bw.flush();        }
回复 使用道具 举报
package test2;

import java.io.*;
import java.util.*;

public class Test2 {

        public static void main(String[] args) {
                  // 创建集合对象,创建Random对象
        ArrayList<Integer> al = new ArrayList<Integer>();
        Random r = new Random();
        // 存入10个1-100的随机数
        for (int i = 0; i < 10; i++) {

                int num = r.nextInt(100) + 1;
                // 判斷是否是奇數,是,則添加到集閤中
                if (num % 2 != 0) {
                        al.add(num);
                }
        }


        // 使用冒泡排序对集合进行排序
        for (int x = 0; x < al.size() - 1; x++) {
                for (int y = 0; y < al.size() - 1 - x; y++) {
                        if (al.get(y) > al.get(y + 1)) {
                                // 进行数据交换
                                int temp = al.get(y);
                                al.set(y, al.get(y + 1));
                                al.set(y + 1, temp);
                        }
                }
        }
        
       // System.out.println(al);



        //封裝目的地
        FileWriter file = null;
        BufferedWriter bw = null;
                try {
                                file = new FileWriter("D:\\c.txt");
                                bw = new BufferedWriter(file);
                                bw.write(al+"");
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                finally
                {
                        try {
                                        if (bw != null)
                                        {
                                                bw.close();
                                        }
                                        if (file != null)
                                        {
                                                file.close();
                                        }
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                }
      
            
}
       
}
回复 使用道具 举报
年强 发表于 2015-10-5 14:38
package test2;

import java.io.*;

楼主看看哦。。。已测试正确。。。写入文件的格式自己可以调的
回复 使用道具 举报
年强 发表于 2015-10-5 14:39
楼主看看哦。。。已测试正确。。。写入文件的格式自己可以调的

谢谢,不过你这个方法有点长啊,我只会用上面2楼的另一种方法做出来
回复 使用道具 举报
fcl13761179064 发表于 2015-10-4 22:38
BufferedWriter bw = new BufferedWriter(new FileWriter("number.txt"));                for(Integer i : ...

嗯 谢谢 跟我差不多的方法,我做出来了
回复 使用道具 举报
各位,如何标记这个问题已经解决呀?
回复 使用道具 举报
米yu言 发表于 2015-10-5 17:30
谢谢,不过你这个方法有点长啊,我只会用上面2楼的另一种方法做出来

这种方法比较好的。。。上面的方法不建议使用。。。你可以看flush()和close()的方法的详解
回复 使用道具 举报
本帖最后由 米yu言 于 2015-10-6 17:45 编辑
年强 发表于 2015-10-6 15:26
这种方法比较好的。。。上面的方法不建议使用。。。你可以看flush()和close()的方法的详解 ...

都差不多吧,方法是多种的,自己适合的就可以了.你的方法是捕捉异常,不过老师也强调过,开发的时候异常最好是捕捉,只有实在不会的才抛,所以目前阶段我是抛出处理了.至于刷新和关流,我的方法也能实现的.不过还是谢了
回复 使用道具 举报
评分那里的字数超出范围了,,,,继续努力,二面一定没问题
回复 使用道具 举报
//封裝目的地
                BufferedWriter bw = new BufferedWriter(new FileWriter
                                ("D:\\number.txt"));
                StringBuilder sb = new StringBuilder();
                for(Integer num:al){
                  sb.append(num).append(" ");
                }
                bw .write(sb.toString());
                bw.newLine();
                bw.flush();
                bw.close();
回复 使用道具 举报
蓝天I 发表于 2015-10-7 17:19
//封裝目的地
                BufferedWriter bw = new BufferedWriter(new FileWriter
                  ...

谢了 我已经知道如何做了,用的是二楼的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马