JavaSE 基础学习作业 —— IO 操作相关

题目:

根据 coreJava.txt 文件:

  • 提炼出 Question 类
  • 解析文件(一个函数),要求:
    • 把同个等级的题目,放入同一个 ArrayList 集合;
    • 把等级作为 key,把 ArrayList 集合作为 value,放入 Map 集合;
  • 出一套考题,每个等级一道题目(随机选出 Random)写成一个函数

部分 coreJava.txt 内容如下:

@answer=2/3,score=5,level=5
指出下面语句没有编译错误的是:
long n = 999999999999;
int n = 999999999999L;
long n = 999999999999L; 
double n = 999999999999;
@answer=1/2,score=5,level=4
下列关于数组的声明错误的是:
int[] arry = new int[100];
int[3] arry = {1,2,3};
int[] arry = new int[]{1,2,3};
int[][] arry = new int[3][];
@answer=0/1/2,score=5,level=3
语句System.out.println(1+2+"java"+3+4)输出的结果是:
3java34
12java34
3java7
12java7
@answer=1,score=5,level=6
Java语言中int类型标示整数的最大范围是:
-2147483647~ 2147483647 
<T>-2147483648 ~2147483647 
-32767~32767
-32768~32767
@answer=1,score=5,level=7
Java语言中字符串“学Java”所占的内存空间是:
6个字节
7个字节
10个字节
11个字节
@answer=1,score=5,level=8
对JDK描述错误的是:
运行Java程序只要有JRE环境就可以,不一定需要全部JDK的功能
JDK中包括JVM、核心类库、Java开发工具(java,javac)等
JDK本身也是平台无关的,不同的操作系统安装的JDK是一样的
JDK的全称是 Java Development Kit

答案:

1. Question.java

作用:提炼出 Question 类

package homework4_27;

import java.util.ArrayList;

public class Question {
    private int score;
    private int level;
    private String answer;
    private String description;
    private ArrayList<String> options;
    
    public Question() {
        this.options = new ArrayList<String>();
    }
    public Question(int score, int level, String answer, String description) {
        super();
        this.score = score;
        this.level = level;
        this.answer = answer;
        this.description = description;
        this.options = new ArrayList<String>();
    }
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }
    public int getLevel() {
        return level;
    }
    public void setLevel(int level) {
        this.level = level;
    }
    public String getAnswer() {
        return answer;
    }
    public void setAnswer(String answer) {
        this.answer = answer;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public ArrayList<String> getoptions() {
        return options;
    }

    public void addOption(String op) {
        options.add(op);
    }
    @Override
    public String toString() {
        return "Question [score=" + score + ", level=" + level + ", answer=" + answer + ", description=" + description
                + ", options=" + options + "]";
    }
    
    public void showQuestion() {
        System.out.println("Question: " + description);
        System.out.println("Options: ");
        for(String op : options) {
            System.out.println(op);
        }
        System.out.println("Answer: " + answer);
        System.out.println("Score: " + score);
    }
}

2. homework2.java

作用

  • 解析文件:
    • 把同个等级的题目,放入同一个 ArrayList 集合;
    • 把等级作为 key,把 ArrayList 集合作为 value,放入 Map 集合;
package homework4_27;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;

// 解析 v2.0,将所有解析后的问题放入单一一个 ArrayList 中
public class homework2 {
    public static void main(String[] args) {
        // 按 level 存入的问题集
        HashMap<Integer, ArrayList<Question> > questWithLevel = new HashMap<Integer, ArrayList<Question> >();
        
        try {
            BufferedReader br = 
                    new BufferedReader(
                            new InputStreamReader(
                                    new FileInputStream("/Users/upcautolang/Documents/corejava.txt")));
            String str = null;
            
            Question question = null;
            int extraLineNum = 0;
            while((str = br.readLine()) != null){
                // 包含 @,则可以分析问题的学分、答案、等级
                if(str.contains("@")) {
                    // 将当前非空的 question 传入 questWithLevel 的 Map 集合
                    if(question != null) {
                        int key = question.getLevel();
                        ArrayList<Question> tmpList = new ArrayList<Question>();
                        if(questWithLevel.containsKey(key)) {
                            tmpList = questWithLevel.get(key);
                        }
                        else {
                            tmpList = new ArrayList<Question>();
                        }
                        tmpList.add(question);
                        questWithLevel.put(key, tmpList);
                    }
                    question = new Question();
                    // 切分信息
                    // 例:@answer=2/3,score=5,level=5
                    String[] infos = str.split("[@,][a-z]+=");
                    // 设置答案,成绩,等级
                    question.setAnswer(infos[1]);
                    question.setScore(Integer.parseInt(infos[2]));
                    question.setLevel(Integer.parseInt(infos[3]));
                    
                    extraLineNum = 0; 
                }
                else {
                    if(extraLineNum == 0) {
                        question.setDescription(str);
                        extraLineNum = 1;
                    }
                    else {
                        question.addOption(str);
                        extraLineNum++;
                    }
                }
            }
            // 测试打印
            for(int level : questWithLevel.keySet()) {
                System.out.println("================================");
                System.out.println("Level " + level + " Question Set:");
                System.out.println("---------");
                ArrayList<Question> questionList = questWithLevel.get(level);
                for(Question quest : questionList) {
                    System.out.println(quest);
                }
            }
            
        } catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

3. homework3.java

作用:出一套考题,每个等级一道题目(随机选出 Random)写成一个函数

package homework4_27;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Random;

// 解析 v2.0,将所有解析后的问题放入单一一个 ArrayList 中
public class homework3 {
    public static void main(String[] args) {
        // 按 level 存入的问题集
        HashMap<Integer, ArrayList<Question> > questWithLevel = new HashMap<Integer, ArrayList<Question> >();
        
        try {
            BufferedReader br = 
                    new BufferedReader(
                            new InputStreamReader(
                                    new FileInputStream("/Users/upcautolang/Documents/corejava.txt")));
            String str = null;
            
            Question question = null;
            int extraLineNum = 0;
            while((str = br.readLine())!=null){
                // 包含 @,则可以分析问题的学分、答案、等级
                if(str.contains("@")) {
                    // 将当前非空的 question 传入 questWithLevel 的 Map 集合
                    if(question != null) {
                        int key = question.getLevel();
                        ArrayList<Question> tmpList = new ArrayList<Question>();
                        if(questWithLevel.containsKey(key)) {
                            tmpList = questWithLevel.get(key);
                        }
                        else {
                            tmpList = new ArrayList<Question>();
                        }
                        tmpList.add(question);
                        questWithLevel.put(key, tmpList);
                    }
                    question = new Question();
                    // 切分信息
                    // 例:@answer=2/3,score=5,level=5
                    String[] infos = str.split("[@,][a-z]+=");
                    // 设置答案,成绩,等级
                    question.setAnswer(infos[1]);
                    question.setScore(Integer.parseInt(infos[2]));
                    question.setLevel(Integer.parseInt(infos[3]));
                    
                    extraLineNum = 0; 
                }
                else {
                    if(extraLineNum == 0) {
                        question.setDescription(str);
                        extraLineNum = 1;
                    }
                    else {
                        question.addOption(str);
                        extraLineNum++;
                    }
                }
            }
            
            // 随机出题
            System.out.println("=========================");
            System.out.println("     琦少的随机考试");
            System.out.println("=========================");
            
            for(int level : questWithLevel.keySet()) {
                System.out.println("------- Level " + level + " --------");
                ArrayList<Question> questionList = questWithLevel.get(level);
//              int randomNumber = (int) Math.round(Math.random() * (questionList.size()-1));
                int randomNumber = new Random().nextInt(questionList.size());
                questionList.get(randomNumber).showQuestion();
            }
        } catch (IOException e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,577评论 18 399
  • 优缺点 优点: 简洁 非常容易并行计算(Stream) 利于编译器优化(猜测是因为编译是不用解析字面量,可能还有 ...
    杰哥长得帅阅读 309评论 0 0
  • 园子 一个亭子 依偎的二个人 守着四季 种上小花 时令蔬菜 晴时赏花 雨时读书 弯弯小径 早晨 我在这头送你 晚上...
    郁江旅人阅读 75评论 0 0
  • 晚上打电话回家,老爸说,猫不见了,清明那几天忙着扫墓,回家也没注意,晚上还能听到叫声,再后来就再也没有见过踪影...
    掉线黑眼圈阅读 401评论 0 0
  • 下了整整一天的雪❄❄❄,洋洋洒洒,纷纷淋淋。让人措手不及,让人欢呼雀跃。 适逢“小雪”日,又忆旧年清...
    暮霭夕颜阅读 301评论 0 1