字符流问答小程序解题过程及拓展
题干:
(实践题)使用输入流读取试题文件,每次显示试题文件中的一道题目。读取到字符“*”时暂停读取,等待用户从键盘输入答案。用户做完全部题目后。程序给出用户的得分(10分一道题)。
1) 试题内容如下:
(1)英雄联盟S9全球总决赛是什么时间开幕的?
A.2018-08-08 B. 2018-08-01
C.2019-10-01 D. 2019-10-02
********************
(2)下列哪个英雄不属于《英雄联盟》?
A.卡特 B.盲僧 C.剑豪 D.后羿
********************
(3).以下哪一句不是疾风剑豪亚索的台词?
A.死亡如风,常伴吾身。B.面对疾风吧!C.真正的大师,永远都怀着一颗学徒的心。D.哈塞给!
********************
(4).英雄联盟世界S赛被OMG基地50血翻盘的战队是?
A.SKT B.Najin C.FNC D.G2
********************
(5)英雄联盟中,戏称最争气的英雄是?
A迅捷斥候 B蒸汽机器人 C德玛西亚之力 D疾风剑豪
********************
-------》程序运行如下:
(1)英雄联盟S9全球总决赛是什么时间开幕的?
A.2018-08-08 B. 2018-08-01
C.2019-10-01 D. 2019-10-02
输入选择的答案(A、B、C、D):D
(2)下列哪个英雄不属于《英雄联盟》?
A.卡特 B.盲僧 C.剑豪 D.后羿
输入选择的答案(A、B、C、D):D
...
...
完成试题,恭喜你 你最后的得分为:20 分。
*/
先浅浅打印一下,控制台打印成功
加入判断语句,使其在出现*时暂停读取,输入答案,试运行一下
基本实现我们想要的效果,但是当我输出小写字母的答案时,找不到与之相匹配的值,所以即便我答案正确也不得分,所以可以写一个输出错误语句。
java中“==”的使用回顾:
因为在Java中,如果是基本数据类型,则 == 比较的是值;如果是对象类型,则 == 比较的是对象的地址。
//基本数据类型 ==判断的是值String str1 = "hello";String str2 = "hello";System.out.println(str1 == str2);
基本数据类型,==判断的是值,结果为true.
//引用数据类型,==判断的是他们在内存中存放的地址String str1 = new String("hi");String str2 = new String("hi");System.out.println(str1 == str2);
引用数据类型,==判断的是他们在内存中存放的地址,结果为false。
之前的语句
/ 用String来存储String line;while ((line = br.readLine()) != null) {br.lines();if (!line.startsWith("*")) {System.out.println(line);} else {System.out.println("输入选择的答案(A、B、C、D):");String choice = sc.next();
// 拼接输入答案result = sb.append(choice.charAt(0)).toString();}}// 存储总得分int sum = 0;for (int i = 0; i < result.length(); i++) {
// 比较输入结果和答案if (result.charAt(i) == anser.charAt(i)) {sum += 10;}}System.out.println("完成试题,恭喜你 你最后的得分为:" + sum + "分。");
改进后:
// 用String来存储String line;while ((line = br.readLine()) != null) {br.lines();if (!line.startsWith("*")) {System.out.println(line);} else {
// 加入一个死循环,确保输错也能继续运行boolean flag = true;while (flag) {System.out.println("输入选择的答案(A、B、C、D):");String choice = sc.next();
// 选择输入的内容与设置的答案相比较,都满足“不等于A/B/C/D”的条件if (!choice.equals("A") && !choice.equals("B") && !choice.equals("C") && !choice.equals("D")) {System.out.println("您输入的答案有误,请重新");} else {// 拼接输入答案result = sb.append(choice.charAt(0)).toString();flag = false; //终止循环}}}}
完整运行可得:
(1)英雄联盟S9全球总决赛是什么时间开幕的?A.2018-08-08 B. 2018-08-01 C.2019-10-01 D. 2019-10-02
输入选择的答案(A、B、C、D):
a
您输入的答案有误,请重新
输入选择的答案(A、B、C、D):
A
(2)下列哪个英雄不属于《英雄联盟》?A.卡特 B.盲僧 C.剑豪 D.后羿
输入选择的答案(A、B、C、D):
D
(3).以下哪一句不是疾风剑豪亚索的台词?A.死亡如风,常伴吾身。B.面对疾风吧!C.真正的大师,永远都怀着一颗学徒的心。D.哈塞给!
输入选择的答案(A、B、C、D):
C
(4).英雄联盟世界S赛被OMG基地50血翻盘的战队是?A.SKT B.Najin C.FNC D.G2
输入选择的答案(A、B、C、D):
B
(5)英雄联盟中,戏称最争气的英雄是?A迅捷斥候 B蒸汽机器人 C德玛西亚之力 D疾风剑豪
输入选择的答案(A、B、C、D):
D
完成试题,恭喜你 你最后的得分为:30分。进程已结束,退出代码 0
完整代码如下:
package com.B.IOStream_14.CharDemo03.Ask;import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;//(实践题)使用输入流读取试题文件,每次显示试题文件中的一道题目。
// 读取到字符“*”时暂停读取,等待用户从键盘输入答案。用户做完全部题目后。
// 程序给出用户的得分(10分一道题)。
public class A4 {public static void main(String[] args) throws IOException {
// 创建输入流对象BufferedReader br = new BufferedReader(new FileReader("Temp\\问答题.txt"));
// BufferedWriter bw = new BufferedWriter(new FileWriter("Temp\\itDemo\\array1.txt"));
// StringBuilder拼接输入答案StringBuilder sb = new StringBuilder();
//键盘输入Scanner sc = new Scanner(System.in);
// 设置答案String anser = "DDCCD";
//初始化选择String result = null;
//读取试题文件
// char[] chs = new char[1024];
// int len;
//while ((len= br.read(chs)) != -1){
// System.out.println(new String(chs,0,len));
//}// 用String来存储String line;while ((line = br.readLine()) != null) {br.lines();if (!line.startsWith("*")) {System.out.println(line);} else {
// 加入一个死循环,确保输错也能继续运行boolean flag = true;while (flag) {System.out.println("输入选择的答案(A、B、C、D):");String choice = sc.next();
// 选择输入的内容与设置的答案相比较,都满足“不等于A/B/C/D”的条件if (!choice.equals("A") && !choice.equals("B") && !choice.equals("C") && !choice.equals("D")) {System.out.println("您输入的答案有误,请重新");} else {// 拼接输入答案result = sb.append(choice.charAt(0)).toString();flag = false; //终止循环}}}}// 存储总得分int sum = 0;for (int i = 0; i < result.length(); i++) {
// 比较输入结果和答案if (result.charAt(i) == anser.charAt(i)) {sum += 10;}}System.out.println("完成试题,恭喜你 你最后的得分为:" + sum + "分。");//释放资源br.close();}
}
字符流问答小程序解题过程及拓展相关推荐
- 课程设计-在校整理-10 基于知识图谱的医疗智能问答小程序实现示例
[在校整理-10 基于知识图谱的医疗智能问答小程序实现示例](注:仅供参考学习使用) 一.课题内容和要求 1.问题描述 2.功能要求 二.需求分析 三.概要设计 四.源程序代码 五.测试总结 六.其他 ...
- 微信小程序 登录过程
微信小程序 登录过程 本文由笔者自己经验所得,不妥之处还望指教: 微信代码 php后端代码 流程 小程序请求code 小程序请求encryptedData 后端请求session_key 后端解密 小 ...
- 公众号如何引流?小程序也可以疯狂引流
创业最害怕的是什么?万事俱备,就差客户. 对于创业者而言,产品再好.服务再好,卖不出去全白搭,找到适合自己的有效推广引流渠道,创业也就成功了一小半,并且兴棋博客还给看到最后的小伙伴准备了一份推广引流秘 ...
- 运营技能:从公众号引流到小程序(关注自动回复小程序消息)
文章目录 引言 I 从公众号引流到小程序 1.1 小程序路径简介 1.2 获取小程序路径 1.3 公众号自动回复小程序消息 II 微信小程序组件的使用 2.1 关注公众号 2.2 效果 see als ...
- js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载
电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的. 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化. 所以,我们把瀑布流框 ...
- 微信小程序自学过程中遇到的问题 转
view标签下hover必须为true时,设置hover-class才有效,hover-start-time和hover-stay-time的形式如下: < view class="v ...
- 开发微信小程序的过程记录
目录 1.运用阿里巴巴的IconFont 2.小程序需要运用到的路由类型 3.绝对定位下的水平居中实现 4.选择图片和视频 5. 小程序连接数据库 6.存储多个对象的数组 7. 上传图片等文件至服务器 ...
- 判断 小程序_第五届美亚杯赛前必备:从案情资料到小程序解题
2019年11月11日 首届电子数据取证小程序大赛 截止投稿啦 同时 "美亚杯"第五届中国电子数据取证大赛 将于11月16日 正式拉开序幕 届时有小伙伴会使用取证小程序来解答吗美美 ...
- 实现阿里云物联网平台设备信息到微信小程序分享过程
简要说明: 实现微信小程序连接阿里云物联网平台并且显示阿里云设备信息等,设备端采用模拟设备进行数据上传,并且利用规则引擎和自定义的Topic进行信息的接受和发送. 目前效果图 步骤: 1.注册阿里云物 ...
最新文章
- php中if规则,php中if函数用法
- matlab搜索路径
- 深入理解Java:注解(Annotation)基本概念、自定义注解、注解解析器
- java的imshow方法_如何在循环中使用子图,imshow或图形来显示所有图像?
- 翻译(九)——Clustered Indexes: Stairway to SQL Server Indexes Level 3
- 搭建PC架构的ISCSI存储系统
- WP7模拟器使用技巧
- Unix 文件和目录
- Vue 炫酷 Echarts 图表
- 大学生如何自学PR剪辑以及PS教程?
- 【每天学一点新知识】getshell???webshell???
- VirtualBox Linux网络配置
- 1.1各种编程语言的介绍
- 【Unity3D游戏教程】记忆翻牌游戏
- 平衡搜索树中的左单旋右单旋双旋
- 【Ubuntu】安装 ibus 中文拼音输入法
- java自动化测试语言高级之MySQL 连接
- 一道亚马逊算法面试题的情景分析
- 瑞萨E1仿真器(R0E000010KCE00)支持的MCU系列---78K Family
- python—xlwt模块详解