永发信息网

用java完成唐诗测试游戏:从每句随机去掉一个字_代替,然后将去掉的字组合为4种选项,让用户选择正确答案。

答案:3  悬赏:80  手机版
解决时间 2021-03-28 19:32
用java完成唐诗测试游戏:从每句随机去掉一个字_代替,然后将去掉的字组合为4种选项,让用户选择正确答案。
最佳答案
Java程序:

import java.util.Random;

public class Test0201 {
public static void main(String[] args) {
String[] poem = new String[]{"赠孟浩然",
"吾爱孟夫子", "风流天下闻",
"红颜弃轩冕", "白首卧松云",
"醉月频中圣", "迷花不事君",
"高山安可仰", "徒此揖清芬"};
String[] keys = new String[poem.length-1]; //存储每句中抽出的单字
String[] items = new String[4]; //存储4种备选答案选项
String correctItem;
int i;

drawKey(poem, keys);

correctItem = generateItems(keys, items);

System.out.println("以下唐诗的每一句都少一个字,请选择合适的选项,将各选项中的字接顺序填充后,形成完整的唐诗:\n");
System.out.println(poem[0]);
for(i=1; i System.out.println(poem[i] + (i%2==1 ?"," : "。"));
}
System.out.println();
for(i=0; i System.out.println(items[i]);
}

System.out.print("\n正确答案:" + correctItem);
}

//从各句唐诗中抽取一个字并存储,将该字用“_”代替
public static void drawKey(String[] poem, String[] keys){
int i, pos;
Random rand = new Random();
for(i=1; i pos=rand.nextInt(poem[i].length());
keys[i-1] = poem[i].substring(pos, pos+1);
poem[i] = poem[i].substring(0, pos) + "_" + poem[i].substring(pos+1);
}
}

//组成备选答案选项,返回正确答案
public static String generateItems(String[] keys, String[] items){
Random rand = new Random();
int[] arr;
int n = keys.length;
int pos = rand.nextInt(4); //正确答案的位置
int i, j;
StringBuffer buff = new StringBuffer();

for(i=0; i buff.append(keys[i]);
}
items[pos] = (char)('A' + pos) + ". " + buff.toString();
buff.delete(0, n);

for(i=0; i<4; i++){
if(i == pos){
continue;
}
arr = generateArray(n);
for(j=0; j buff.append(keys[arr[j]]);
}
items[i] =(char)('A' + i) + ". " + buff.toString();
buff.delete(0, n);
}

return items[pos];
}

//生成由n个数字[0, n-1]组成的随机数数组
private static int[] generateArray(int n){
int[] arr = new int[n];
Random rand = new Random();
int i;
for(i=0; i arr[i] = rand.nextInt(n);
if(isExistFigure(arr, i, arr[i])){
continue;
}
i++;
}

return arr;
}

//判断某数字在数组中是否存在
private static boolean isExistFigure(int[] arr, int n, int key){
for(int i=0; i if(arr[i] == key){
return true;
}
}
return false;
}
}

运行测试:
第一次测试:
以下唐诗的每一句都少一个字,请选择合适的选项,将各选项中的字接顺序填充后,形成完整的唐诗:

赠孟浩然
吾_孟夫子,
_流天下闻。
红颜弃轩_,
白首卧松_。
醉月频中_,
迷花不事_。
高山安_仰,
_此揖清芬。

A. 爱徒君风可云冕圣
B. 云徒君风冕圣爱可
C. 君冕圣可风云徒爱
D. 爱风冕云圣君可徒

正确答案:D. 爱风冕云圣君可徒

第二次测试:
以下唐诗的每一句都少一个字,请选择合适的选项,将各选项中的字接顺序填充后,形成完整的唐诗:

赠孟浩然
吾爱孟夫_,
风流天下_。
红颜弃_冕,
_首卧松云。
醉月频_圣,
迷花_事君。
高山_可仰,
徒此揖_芬。

A. 不白闻子中轩清安
B. 子闻轩白中不安清
C. 白不闻轩清安子中
D. 清子不白中安轩闻

正确答案:B. 子闻轩白中不安清
全部回答
给我几首唐诗。。。。
import java.util.Random;
public class Test {
public static void main(String[] args){
String tangshi = "锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。" ;
char[] c = tangshi.toCharArray() ;
Random ran = new Random() ;
int ran1 = ran.nextInt(4) ;
int ran2 = ran.nextInt(4)+6 ;
int ran3 = ran.nextInt(4)+12 ;
int ran4 = ran.nextInt(4)+18 ;
char[] xuanxiang = new char[4] ;
xuanxiang[0] = c[ran1] ;
c[ran1] = '_' ;
xuanxiang[1] = c[ran2] ;
c[ran2] = '_' ;
xuanxiang[2] = c[ran3] ;
c[ran3] = '_' ;
xuanxiang[3] = c[ran4] ;
c[ran4] = '_' ;
for(int i=0; i System.out.print(c[i]) ;
if((i==5)||(i==11)||(i==17)||(i==23)){
System.out.println() ;
}
}
int [] abcd = getABCD() ;
System.out.print("A、"+xuanxiang[abcd[0]]+" ");
System.out.print("B、"+xuanxiang[abcd[1]]+" ");
System.out.print("C、"+xuanxiang[abcd[2]]+" ");
System.out.print("D、"+xuanxiang[abcd[3]]);
}

public static int[] getABCD(){
int[] c = new int[4] ;
Random ran = new Random() ;
boolean flag = true ;
while(flag){
c[0] = ran.nextInt(4) ;
c[1] = ran.nextInt(4) ;
if(c[0] != c[1]){
c[2] = ran.nextInt(4) ;
if((c[0]!=c[2])&&(c[1]!=c[2])){
c[3] = ran.nextInt(4) ;
if((c[0]!=c[3])&&(c[1]!=c[3])&&(c[2]!=c[3])){
flag=false ;
}
}
}

}
return c;
}
}
如果是7字的诗你就自己修改吧!呵呵!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
膨化料的浮水率如何确定?
怎样才能学好数学,做到出尖拔萃(现初二)
金轮能否拿下蒙古三杰?霍都达尔巴和三杰有多
中国神话中的“神 仙 魔 妖 鬼 怪”有哪些?
北美洲和南美洲
我想买很多很多国外商品,支付宝国际支付有没
我是oppor9手机,怎样与vivox7手机一键换机呢
17岁男生身高173体重115斤,还需要减肥吗??
什么是精准护肤,大家知道吗
上实发展工作环境如何,怎么样
民国三年银元值多少钱
建筑工程项目人员的工资占工程总造价的比例是
一款Iphone游戏是用弹弓弹一只猪,然后那只猪
冬冬今年15岁,其父母经常外出经商,让冬冬一
去洗桑拿 洗澡出来穿桑拿服的时候 里面要穿内
推荐资讯
在平面直角坐标系中有一点a(|,|),对a进行如下
资金保有额是什么意思
厨房想做四扇推拉门,门洞宽2.55米,高度留多
2007年欧洲冠军联赛决赛的决赛之路
1.已知直线l经过椭圆x²/9+y²=1
为什么父亲有23对染色体,母亲又23对染色
浅谈思想道德与人生境界
入职新公司还没过试用期,公司培养了两个月还
用六字真爱对爱人承诺
六十岁以上的港台明星
绘画达到什么地步才可以写生?怎样自学在初期
某两种商品的需求量变化如下图所示,由此推断
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?