1. 选择结构---if...else结构
2. 选择结构---switch...case结构
一、if...else结构
If...else直译就是如果...否则if括号中的最终值一定是布尔类型的
四种表现形式:
1. 简单的if
if(条件) //条件为true的时候才执行下面的代码段
{
满足条件下执行的代码段
}
2. 标准的if...else
if(条件)
{
}
else
{
}
3. 多重的if...else if...else结构
if(条件)
{
}
else if(条件)
{
}
else if(条件)
{
}
else if(条件)
{
}
...
else
{
}
4. 嵌套的if...else
if(条件)
{
if()
{
}
else
{
}
}
else
{
if()
{
}
else
{
}
}
二、switch...case结构
通俗来讲就是一种傻瓜式的匹配模式语法结构:
switch(value)
{
case value1:
代码段
break;
case value2:
代码段
break;
case value3:
代码段
break;
case value4:
代码段
break;
....
case valuen:
代码段
break;
default:
代码段.
}
匹配,通俗来讲,哪一个case后的value值和switch中的value值相同,就执行那一个case下的代码段,如果没有任何一个case后value值和switch中的value值相同,那么久执行default下的代码段.
补充:在switch...case结构中,break是非常重要的,在代码执行过程中,遇到break意味着一个代码段的结束,何为一个代码段,即{}。
如果在switch...case的运行中没有break,那么在找到和switch中value匹配的case后,代码会一直向下执行,直到遇到break才结束或者直到代码段结束。
练习题:
1.四则运算
运行结果:
请输入第一个数字:
请输入第二个数字:
请输入运 算 符: + - * / %
运行结果:
+ - * 运行时没有问题
/和%需要判断除数不能为零
(1)if...else结构实现
import java.util.Scanner;
public class Demo01
{
/*
* 1.如果运算符输入错误,循环从新输入运算符
* 2.被除数和运算符OK,除数为零,如何继续
* 3.正确计算后,可否继续计算
*/
public static void main(String[] args)
{
/*
* 如果想向正在运行的程序输入数据,那么代码中必须引入Scanner类
* 1.引入Scanner类 import java.util.Scanner;
* 2.利用Scanner类提供的各种方法向程序输入数据
* 3.需要拿到Scanner类的对象才能使用Scanner类拥有的各种方法
*/
Scanner input=new Scanner(System.in);//拿到Scanner类的对象input
System.out.println("请输入第一个数字:");
double a=input.nextDouble();
System.out.println("请输入第二个数字:");
double b=input.nextDouble();
System.out.println("请输入运 算 符:");
String oper=input.next();
if(oper.equals("+"))
{
System.out.println("运算的结果是:"+(a+b));
}
else if(oper.equals("-"))
{
System.out.println("运算的结果是:"+(a-b));
}
else if(oper.equals("*"))
{
System.out.println("运算的结果是:"+a*b);
}
else if(oper.equals("/"))
{
if(b==0)
{
System.out.println("除数不能为零");
}
else
{
System.out.println("运算的结果是:"+a/b);
}
}
else if(oper.equals("%"))
{
if(b==0)
{
System.out.println("除数不能为零");
}
else
{
System.out.println("运算的结果是:"+a%b);
}
}
else
{
System.out.println("运算符输入错误!");
}
}
}
(2)switch...case结构实现
import java.util.Scanner;
public class Demo03
{
public static void main(String[] args)
{
/*
* 如果想向正在运行的程序输入数据,那么代码中必须引入Scanner类
* 1.引入Scanner类 import java.util.Scanner;
* 2.利用Scanner类提供的各种方法向程序输入数据
* 3.需要拿到Scanner类的对象才能使用Scanner类拥有的各种方法
*/
Scanner input=new Scanner(System.in);//拿到Scanner类的对象input
System.out.println("请输入第一个数字:");
double a=input.nextDouble();
System.out.println("请输入第二个数字:");
double b=input.nextDouble();
System.out.println("请输入运 算 符:");
String oper=input.next();
switch(oper)
{
case "+":
System.out.println("运算的结果是:"+(a+b));
break;
case "-":
System.out.println("运算的结果是:"+(a-b));
break;
case "*":
System.out.println("运算的结果是:"+a*b);
break;
case "/":
if(b==0)
{
System.out.println("除数不能为零!");
}
else
{
System.out.println("运算的结果是:"+a/b);
}
break;
case "%":
if(b==0)
{
System.out.println("除数不能为零!");
}
else
{
System.out.println("运算的结果是:"+a%b);
}
break;
default:
System.out.println("运算符输入错误!");
}
}
}
2. 判断是否进入决赛
运行结果:
请问您进入决赛了吗?(y/n)
y
请输入您的性别:
请输入您的预赛时间:
当性别是男且时间<13s或者性别是女且时间<15s
恭喜您进入决赛,您被分在男/女子组
否则
你并没有进入决赛,where cold,where to stay!
n
谢谢参与,友谊第一,比赛第二!
提示:需要使用Scanner向正在运行的程序输入数据!
import java.util.Scanner;
public class Demo02
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
System.out.println("请问您进入百米决赛了吗?");
String an=input.next();
if(an.equals("y"))
{
System.out.println("请输入您的性别:");
String sex=input.next();
System.out.println("请输入您的预赛时间:");
double time=input.nextDouble();
if((sex.equals("男")&&time<13)||(sex.equals("女")&&time<15))
{
System.out.println("恭喜您进入百米决赛了,您被分在"+sex+"组");
}
else
{
System.out.println("你并没有进入决赛,where cold,where to stay!");
}
}
else
{
System.out.println("谢谢参与,友谊第一,比赛第二!");
}
}
}
Java基础相关知识: |