码迷,mamicode.com
首页 > 其他好文 > 详细

面试题: 一个笑话文本, 随机输出其中的一个笑话

时间:2021-06-02 18:57:40      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:之间   文本   没有   添加   adl   题目   buffered   reader   user   

  公司的一个面试题, 自己简单做了一下, 要求是: 一个笑话文本(joke.txt), 其中这个文本每个笑话之间是以空行分割, 文本开头没有空行, 文本结尾有空行, 要求:  读取这个文本并随机输出其中的一个笑话.

  这个题目可能有多种方法, 其中我的思路是: 获取文本中空格的下标, 取两个相邻下标之间的文本,然后输出, 具体的实现如下代码:

package com.zz.company.jvm.demo.IO;

import lombok.extern.slf4j.Slf4j;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * @author Admin
 * @Description 一个笑话文本(joke.txt), 其中这个文本每个笑话之间是以空行分割, 文本开头没有空行, 文本结尾有空行, 要求:  读取这个文本并随机输出其中的一个笑话,
 * @date 2021/5/28 16:40
 */
@Slf4j
public class FileDemo {

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

        List<String> strList = new ArrayList<>();
        List<Integer> indexList = new ArrayList<>();

        //读取桌面的笑话txt文件
        FileReader fr = new FileReader("C:\\Users\\Admin\\Desktop\\joke.txt");

        BufferedReader br = new BufferedReader(fr);


        String str = null;
        //把所以字符行添加到strList中(包括空行)
        while ((str = br.readLine()) != null) {
            strList.add(str);
        }
        //收集strList中所有的空行的下标,并把下标存到indexList中, 等下要利用下标获取笑话文本
        for (int i = 0; i < strList.size(); i++) {
            String s = strList.get(i);
            if ("".equals(s)) {
                indexList.add(i);
            }
        }

        //随机获取indexList中的下标
        int size = indexList.size();
        int randomIndex = (int) (Math.random() * size);

        //遍历list, 获取两个下标之间的笑话并输出
        for (int i1 = 0; i1 < strList.size(); i1++) {
            //如果随机下标正好是文末的空行, 则取第一个笑话
            if (randomIndex == size - 1 && i1 > 0 && i1 < indexList.get(0)) {
                System.out.println(strList.get(i1));
                //其他的取两个空行之间的笑话
            } else if (randomIndex != size - 1 && i1 > indexList.get(randomIndex) && i1 < indexList.get(randomIndex + 1)) {
                System.out.println(strList.get(i1));
            }
        }
        br.close();

    }

}

 

总结:

技术图片

 

面试题: 一个笑话文本, 随机输出其中的一个笑话

标签:之间   文本   没有   添加   adl   题目   buffered   reader   user   

原文地址:https://www.cnblogs.com/keepRunningPlease/p/14832348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!