Java程序设计第二课
复习
- 输入
第一步骤:获取输入设备 Scanner
第二步骤:获取内容: next()获取空格分隔的字符串,nextLine获取一行字符串
(2)打印输出:
System.out.println()
字符串拼接: 注意: 变量名不用加双引号 其他输出用双引号引起来即可
变量名:理解成输出其字母定义的未知数其中的内容.
变量名命名: 字母 数字 符号(下划线,美元符号),
注意:变量名不能定义数字作首字母
美元符号也不能做首字母
(3)随机
Math类 round四舍五入
Random()产生[0,1)之间的随机数 区间:左闭右开
程序设计:
顺序结构(程序逻辑流程)
选择结构(if条件): 发生在用户参与互动,选择性选择输出内容,根据内容的不同做不同的操作
程序:
简易考试系统
流程(基本功能,不能检查)
- 用户输入 准考证号 姓名
- 进入考试界面(1----数学,2----英语两门课)
- 用户输入数学或者语文的代表数字
- 系统出题(暂时题是固定的)
- 用户输入答案,判断答案,对加10分,错不加分
- 限定每个科目中两个题, 最后输出用户的考试成绩
后面开发:在基本功能上面进行优化
第一步: 用户输入 准考证号 姓名
输入设备 Scanner(一个, 不考虑多人参考)条件:同一时刻只有一人参加考试
接收准考证号 姓名(先不考虑准考证号和姓名的合法性)
输出:最终输出:考生XXXX,姓名xXXX的成绩是:XXXXX
第二步:进入考试界面(1----数学,2----英语两门课)
需要有用户选择,命令行条件下用菜单
第三步:用户输入数学或者语文的代表数字
只需一个输入设备,否则浪费系统资源 (前面变量会走在这里)
接收数据
第四步: 系统出题(暂时题是固定的)
显示题目界面 A B C D
第五步:用户输入答案,判断答案,对加10分,错不加分
If语句判断条件,对加分
第六步:限定每个科目中两个题, 最后输出用户的考试成绩
最后输出成绩(成绩是一个变量) 如果用户答对,变量成绩加分
变量指的是在程序的执行过程中是变化的量
变量在用户答对的时候就要加分
Java注意: 强语言类型,只要有变量,定义类型
考虑从程序开始到程序结尾变量(全局,这些变量定义好不能重名)
成绩: sum 类型: int 整型
输出姓名,考号 姓名 name 考号 no
保证只有一个输入设备,Scanner只有一个 input
编程
先把这些全局变量写好
后面的程序使用变量
开发:
对程序做功能上的改进(找bug)
- 输入准考证号,姓名
准考证号和姓名都是字符串, 字符串极端:第一个是空, 第二个” “
目前输入符号和数字,基本可以过去
限定条件: 准考证号不能出现符号~!#$%^&*()_+-={}[]\|”:’;><,.`
把这些符号定义成字符串,判断用户输入内容是否有其中的内容,如果有,报“非法用户,然后退出”。
indexOf 表示字符中是否有这样的字符串,如果存在输出>=0的数字,如果不存在输出-1
- 输入课程选择
不会接收错误
- 输入答案
考虑问题:字符串中的next不接受空格,如果使用nextLine需要考虑用户输入后面的空格(也就是字符串极端中的第二情况;控制台只输入一个空格)
这里的name,no,sum是由程序中开发者控制,出现计算方面错误.
只有Scanner的接收用户参与。
import java.util.Scanner;
public class MyTestt {
public static void main(String[] args) {
//根据流程分析,先定义变量
//第一个变量:输出设备
Scanner scanner=new Scanner(System.in);
//第二个变量:姓名 考号 不清楚变量的内容只写类型+变量名,防止输出报错,赋初始值,这里初始值为空。
String name="";
String no="";
//第三个变量:成绩,对于成绩,如果用户一个没答对,就是0分,需要初始值。
int sum=0;
//正式进入流程
//输出语句是一个提示.1.用户输入 准考证号- 姓名 准考证号变量值前边有
System.out.println("请输入准考证号");
no=scanner.next();
System.out.println("请输入姓名");
name=scanner.next();
//2.进去考试界面(1---数学,2---英语俩门课)
System.out.println("***********************");
System.out.println("考试--------系统");
System.out.println("1----------数学");
System.out.println("2----------英语");
System.out.println("************************");
//3.用户输入英语或者数学的代表数字
System.out.println("请选择考试科目对应的序号");
String select_no=scanner.next();
//判断用户选择的序号内容,因为是字符串,所以使用equals,如果是数值,直接使用双等,字符串加双引号
if (select_no.equals("1")){
//4.系统出题
System.out.println("1+3=");
System.out.println("A、3 B、4 C、5 D、1");
//5. 用户输入答案,对的加10分,不对不加分
String ans1=scanner.next();
//以为错了不加分,所以不需要else
//转大写toUpperCase
if (ans1.toUpperCase().equals("B")){
sum=sum+10;
}
System.out.println("2+2=");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans2=scanner.next();
if(ans2.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("10+9=");
System.out.println("A、9 B、10 C、算不出来 D、19");
String ans3=scanner.next();
if(ans3.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("6+9=");
System.out.println("A、6 B、15 C、算不出来 D、9");
String ans4=scanner.next();
if(ans4.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("7+9=");
System.out.println("A、7 B、16 C、算不出来 D、9");
String ans5=scanner.next();
if(ans5.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("1+1=");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans6=scanner.next();
if(ans6.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2+0=");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans7=scanner.next();
if(ans7.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("21+2=");
System.out.println("A、21 B、23 C、算不出来 D、不确定");
String ans8=scanner.next();
if(ans8.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2+Π=");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans9=scanner.next();
if(ans9.toUpperCase().equals("C")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2±5=");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans10=scanner.next();
if(ans10.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2*2=");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans11=scanner.next();
if(ans11.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2*9=");
System.out.println("A、18 B、11 C、算不出来 D、不确定");
String ans12=scanner.next();
if(ans12.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("3+9-8=");
System.out.println("A、3 B、4 C、算不出来 D、不确定");
String ans13=scanner.next();
if(ans13.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2-(3+4)=");
System.out.println("A、-5 B、3 C、算不出来 D、不确定");
String ans14=scanner.next();
if(ans14.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("3*Π+7");
System.out.println("A、4 B、2 C、算不出来 D、不确定");
String ans15=scanner.next();
if(ans15.toUpperCase().equals("C")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2+3=");
System.out.println("A、4 B、5 C、算不出来 D、不确定");
String ans16=scanner.next();
if(ans16.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2+5=");
System.out.println("A、4 B、7 C、算不出来 D、不确定");
String ans17=scanner.next();
if(ans17.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2-6=");
System.out.println("A、4 B、-2 C、算不出来 D、不确定");
String ans18=scanner.next();
if(ans18.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("3*8=");
System.out.println("A、24 B、2 C、算不出来 D、不确定");
String ans19=scanner.next();
if(ans19.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("2*9=");
System.out.println("A、18 B、2 C、算不出来 D、不确定");
String ans20=scanner.next();
if(ans20.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("学号:"+no+",姓名:"+name+",成绩为:"+sum);
}else if(select_no.equals("2")){
System.out.println("this is _ apple.");
System.out.println("A、a B、an C、the D、/");
String ans1=scanner.next();
//考虑对英文字母的问题,一定考虑用户输入的大小写问题.toLowerCase()引入的目的确防止用户输入字母的大小写
//因为答案错误就不加分,所以if没有else
if(ans1.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("I play _ piano");
System.out.println("A、a B、an C、the D、/");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans2=scanner.next();
//继续判断
if(ans2.toUpperCase().equals("C")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("____me, please");
System.out.println("A、 Listen B、 say C、 Listen to D、 talk");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans3=scanner.next();
//继续判断
if(ans3.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Would you like _____tea?");
System.out.println("A. some B. a C. any D. many");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans4=scanner.next();
//继续判断
if(ans4.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Don't _____late next time!");
System.out.println("A. is B. are C. be D./");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans5=scanner.next();
//继续判断
if(ans5.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Oh, it's ____. How are you?");
System.out.println("A. you B. your C. yours D. he");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans6=scanner.next();
//继续判断
if(ans6.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("How do you _____Tuesday? ");
System.out.println("A. say B. speak C. talk D. spell");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans7=scanner.next();
//继续判断
if(ans7.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Are they from ____?");
System.out.println("A. Australian B. English C. American D. I dont no");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans8=scanner.next();
//继续判断
if(ans8.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("You can _____she likes bananas a lot.");
System.out.println("A. look B. watch C. see D. to see");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans9=scanner.next();
//继续判断
if(ans9.toUpperCase().equals("C")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("It's very nice ______meet you.");
System.out.println("A. to B. for C. of D./");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans10=scanner.next();
//继续判断
if(ans10.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println(".Is the blue cup yours ______ mine?");
System.out.println("A. and B. but C. for D. or");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans11=scanner.next();
//继续判断
if(ans11.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("The car is ______full ______ move.");
System.out.println("A. too...too B. to...too C. too...to D. to...to");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans12=scanner.next();
//继续判断
if(ans12.toUpperCase().equals("C")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Jim, please come______.");
System.out.println("A. there B. to here C. to home D. here");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans13=scanner.next();
//继续判断
if(ans13.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println(".I'd like ______ a cup of tea.");
System.out.println("A. to eat B. to drink C. eat D. drink");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans14=scanner.next();
//继续判断
if(ans14.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Thanks very much.---______");
System.out.println("A. No thanks B. All right C. You're welcome D. you, too");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans15=scanner.next();
//继续判断
if(ans15.toUpperCase().equals("C")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Can he ______a bike?");
System.out.println("A. to ride B. rides C. riding D. ride");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans16=scanner.next();
//继续判断
if(ans16.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("_____are they? They are at home.");
System.out.println("A. What B. How C. Who D. Where");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans17=scanner.next();
//继续判断
if(ans17.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("he often gets ______ late.");
System.out.println("A. to home B. home C. to here D. to there");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans18=scanner.next();
//继续判断
if(ans18.toUpperCase().equals("B")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("Don't______late for class.");
System.out.println("A. to be B./ C. can't D. be");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans19=scanner.next();
//继续判断
if(ans19.toUpperCase().equals("D")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
System.out.println("______is this pen?");
System.out.println("A. How much B. How many C. What D. Who's");
//答案也可以再复制,复制后修改一下变量名,答案选择不同的变量,防止最后做修改,加检查功能,你的答案变量还存在
String ans20=scanner.next();
//继续判断
if(ans20.toUpperCase().equals("A")){
//选择正确加分,把sum变量加上10分,再给sum变量
sum=sum+10;
}
//7、最后输出成绩
System.out.println("学号:"+no+",姓名:"+name+",成绩为:"+sum);
}else{
System.out.println("你选择了退出考试,没有参加任何一门课程的考试");
}
}
}