顺序结构:
顺序结构指的是语句依次排列,并且语句的先后次序决定了它的执行次序;例如下面的例子,生成了一个在20以内的加法题
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int a,b;
a=(int)(Math.random()*20);//math类中的random方法可以产生[0,1)之间的随机数
b=(int)(Math.random()*20);
System.out.printf("%d+%d=\n",a,b);
}
}
执行结果为产生了一个20以内的加法算式:
分支结构分为几种:
- 1.if(条件表达式)语句A
- 2.if(条件表达式)语句A; else 语句B;
- 3.嵌套if语句
- 4.switch(表达式A){
case 常量表达式1:语句序列1;break;
……
default:语句序列n+1;
}
1.if(条件表达式)语句A
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int a,b,t;
a=(int)(Math.random()*20);
b=(int)(Math.random()*20);
if (a<b) {
t=a;
a=b;
b=t;
}
System.out.printf("%d-%d=\n", a,b);
}
}
用if的分支语句判断了两个数的大小,从而生成一个减法算式,运行结果如下:
2.if(条件表达式)语句A; else 语句B;
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int a,b,answer;
a=(int)(Math.random()*20);
b=(int)(Math.random()*20);
System.out.printf("%d+%d=\n", a,b);
answer=kb.nextInt();//接受用户输入的答案
if(answer==a+b) {
System.out.printf("Good!\n");//如果用户输入正确就返回good
}
else {
System.out.printf("Wrong!\n");
System.out.printf("The right answer is %d\n",a+b);//否则返回正确答案
}
}
}
运行结果如下:
3.嵌套if语句
用if语句嵌套稍作修改,就能把上两个进行加法和减法的功能加上乘法的功能写在一起:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int a,b,t,CorrectAnswer,answer,option;
a=(int)(Math.random()*20);
b=(int)(Math.random()*20);
option=(int)(Math.random()*3);//生成0或1或2的数字,用他们分别代表要进行的操作分支
if(option==0) {
System.out.printf("%d+%d=\n", a,b);
CorrectAnswer=a+b;
}
else {
if(option==1) {
if(a<b) {
t=a;a=b;b=t;
}
System.out.printf("%d-%d=\n",a,b);
CorrectAnswer=a-b;
}
else {
System.out.printf("%d*%d=\n",a,b);
CorrectAnswer=a*b;
}
}
answer=kb.nextInt();
if(answer==CorrectAnswer)
{
System.out.printf("Good!\n");
}
else {
System.out.printf("Wrong!");
System.out.printf("The Correct answer is %d\n", CorrectAnswer);
}
}
}//随机生成一个加法减法或乘法运算
运行结果如下:
4.switch语句
switch(表达式A){
case 常量表达式1:语句序列1;break;
……
default:语句序列n+1;
}
上一个用if嵌套完成的例子也可以稍作修改,用switch语句来完成一样的功能。需要注意的是,
1.)switch()括号里的表达式可以是byte,short,int或char类型,但是不能是其它四个类型;
2.)case后面直接跟的常量表达式只能是常量,不可以是变量,且不同case后面的常量要不一样;
3.)break是为了在某一个case运行之后直接跳出switch,它不是必须的,根据程序的逻辑可以选择是否需要break。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int a,b,t,CorrectAnswer,answer,option;
a=(int)(Math.random()*20);
b=(int)(Math.random()*20);
option=(int)(Math.random()*3);//生成0或1或2的数字,用他们分别代表要进行的操作分支
//option的值当作switch的表达式
switch(option) {
case 0:
System.out.printf("%d+%d=\n", a,b);
CorrectAnswer=a+b; break;
case 1:
if(a<b) {
t=a;a=b;b=t;
}
System.out.printf("%d-%d=\n",a,b);
CorrectAnswer=a-b; break;
default: //也就相当于case 2:
System.out.printf("%d*%d=\n",a,b);
CorrectAnswer=a*b;
}
answer=kb.nextInt();
if(answer==CorrectAnswer){
System.out.printf("Good!\n");
}
else {
System.out.printf("Wrong!");
System.out.printf("The Correct answer is %d\n", CorrectAnswer);
}
}
}//随机生成一个加法减法或乘法运算的switch写法
运行结果如图所示: