当前位置:网站首页>字符流综合练习解题过程
字符流综合练习解题过程
2022-07-29 01:31:00 【王小小鸭】
题干:
(实践题)使用输入流读取试题文件,每次显示试题文件中的一道题目。读取到字符“*”时暂停读取,等待用户从键盘输入答案。用户做完全部题目后。程序给出用户的得分(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();
}
}
边栏推荐
- 表单校验 隐藏的输入框 显示才校验
- TI C6000 TMS320C6678 DSP+ Zynq-7045的PS + PL异构多核案例开发手册(2)
- 点击按钮,下滑到指定的位置
- Promise解决异步
- Force deduction brush question (1): sum of two numbers
- leetcode 242. Valid Anagram(有效的字母异位词)
- h5背景音乐通过触摸自动播放
- Anti crawler mechanism solution: JS code generates random strings locally
- Large scale web crawling of e-commerce websites (Ultimate Guide)
- 12. < tag dynamic programming and subsequence, subarray> lt.72. edit distance
猜你喜欢
![[云原生]微服务架构是什么](/img/84/a0ec68646083f3539aa39ad9d98749.png)
[云原生]微服务架构是什么

数学建模——红酒品质分类

Semiconductor chip industry chain

基于C51实现数码管的显示

(CVPR-2019)选择性的内核网络

The problem of modifying the coordinate system of point cloud image loaded by ndtmatching function in autoware

Cookie和Session

How to find the right agent type? Multi angle analysis for you!

2022年编程语言排名,官方数据来了,让人大开眼界

Anti crawler mechanism solution: JS code generates random strings locally
随机推荐
(arxiv-2018) reexamine the time modeling of person Reid based on video
"Wei Lai Cup" 2022 Niuke summer multi school training camp 3, sign in question cajhf
全志T3/A40i工业核心板,4核[email protected],国产化率达100%
Semiconductor chip industry chain
第十五天(VLAN相关知识)
Type analysis of demultiplexer (demultiplexer)
Number of consecutive subarrays with leetcode/ and K
Using local cache + global cache to realize user rights management of small systems
Implementation of 10m multifunctional signal generator with FPGA
Comprehensive analysis of news capture doorway
How companies make business decisions -- with the help of data-driven marketing
Mathematical modeling -- bus scheduling optimization
[electronic components] constant voltage, amplify the current of the load (triode knowledge summary)
Js DOM2 和 DOM3
Wonderful use of data analysis
IDEA 连接 数据库
The number of consecutive subarrays whose leetcode/ product is less than k
MySQL安装常见报错处理大全
What is the function of data parsing?
Stonedb invites you to participate in the open source community monthly meeting!