程序的结构一般分为三种:
-
顺序结构。
-
选择结构。
-
循环结构。
一、顺序结构:这个不用多说吧,跟我们平时写文章的顺序一样,从上往下。
二、选择结构:从名字就能看出,要选择嘛,到底是要漂亮滴妹子,还是要有钱滴妹子呢!当然,如果是个吊丝码农滴话,那你就不要多想了,还是老老实实码代码吧···
三、循环结构:循环啊,就是一直转啊转啊转啊,转到出意外为止。
接下来还是老规矩,通过小示例来学习语法吧。
顺序结构:
一、输入姓名和年龄,输出自我介绍。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public
static
void
main(String[] args) {
//创建输入数据的对象,具体什么叫对象···,先不用管吧
Scanner input =
new
Scanner(System.in);
String name;
//姓名
int
age;
//年龄
System.out.print(
"请输入姓名:"
);
name = input.next();
System.out.print(
"请输入年龄:"
);
age = input.nextInt();
System.out.println(
"大家好,我叫"
+name+
",今年"
+age+
"岁,请多关照。"
);
}
|
注意:
这就是一个标准的顺序结构,代码会从上往下执行,如果你把int age;这句话放到最后,那就会在age = input.nextInt();这一行报语法错误了。
结果:
选择结构:
选择结构的语法有四种,我们通过下面的案例来了解。
一、输入你的存款,如果大于5000则加上“壕”的头衔。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
static
void
main(String[] args) {
//创建输入数据的对象,具体什么叫对象···,先不用管吧
Scanner input =
new
Scanner(System.in);
String name;
//姓名
int
deposit;
//存款
System.out.print(
"请输入姓名:"
);
name = input.next();
System.out.print(
"请输入存款:"
);
deposit = input.nextInt();
System.out.print(
"大家好,我叫"
+name);
if
(deposit>
5000
){
System.out.print(
"(壕)"
);
}
System.out.println(
"。"
);
}
|
语法:
if( 条件 ){ 要执行的代码 }
注意:
条件成立时会执行{}中的所有代码。
结果:
二、输入你的存款,如果大于5000则加上“壕”的头衔,否则加上“穷13”的头衔。
1
2
3
4
5
6
|
if
(deposit>
5000
){
System.out.print(
"(壕)"
);
}
else
{
System.out.print(
"(穷13)"
);
}
|
注意:别的代码不用动,只需要在if(){}结构上加上else{}就OK了,else{}表示条件不成立时的执行代码。
结果:
三、输入你的存款,如果大于50000,则加上“神壕”的头衔,否则如果大于30000,则加上“金壕”的头衔,否则如果大于10000,则加上“壕”的头衔,否则加上“穷13”的头衔。m.beefsoup.cn板面的做法和配料
1
2
3
4
5
6
7
8
9
10
11
12
|
if
(deposit>
50000
){
System.out.print(
"(神壕)"
);
}
else
if
(deposit>
30000
){
System.out.print(
"(金壕)"
);
}
else
if
(deposit>
10000
){
System.out.print(
"(壕)"
);
}
else
{
System.out.print(
"(穷13)"
);
}
|
注意:这种语法叫多分支选择结构(一般用于选择情况大于2的场合,比如演唱会门票的级别、你的女神的胸肌是A还是BCDEF等)。
结果就不展示了。
四、查询余额请按1,套餐更改请按2,宽带业务请按3,企业业务请按4,人工服务请按5,其它业务请瞎按.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public
static
void
main(String[] args) {
//创建输入数据的对象,具体什么叫对象···,先不用管吧
Scanner input =
new
Scanner(System.in);
int
num;
System.out.print(
"1.查询余额请按1,"
+
"\n2.套餐更改请按2"
+
"\n3.宽带业务请按3"
+
"\n4.企业业务请按4"
+
"\n5.人工服务请按5"
+
"\n6.其它业务请瞎按"
+
"\n请选择:"
);
num = input.nextInt();
switch
(num) {
case
1
:
System.out.println(
"您的余额为0。"
);
break
;
case
2
:
System.out.println(
"改完了,请回吧。"
);
break
;
case
3
:
System.out.println(
"宽带装好了,请交钱1998¥。"
);
break
;
case
4
:
System.out.println(
"请上传企业注册资料。"
);
break
;
case
5
:
System.out.println(
"我们正在招聘服务人员,请稍等..."
);
break
;
default
:
System.out.println(
"乱按好玩吧..."
);
break
;
}
}
|
注意:
-
switch语法一般用于数值类型和布尔类型等值判断的场合,最新版的JDK支持String类型了。小伙伴们可以自己试试。
-
每个case后的语句执行完后都有个小尾巴(break;),表示从这儿退出switch结构,大家可以把这个小尾巴去掉看看结果有什么不一样。
结果:
循环结构:
循环结构常用的有四种:while、do...while、for、foreach(后面讲集合时再介绍)。
对应的语法都很简单,我们通过求100以内的奇数和来了解一下,后面再来分析一个经典案例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public
static
void
main(String[] args) {
//求100以内的奇数和
//1.while循环
int
i =
1
;
//循环的初值
int
s =
0
;
//保存和
while
(i<=
100
) {
//循环的条件
s += i;
//循环的内容
i +=
2
;
//循环的步长(也就是循环变量的值如何变化)
}
System.out.println(
"while循环结果:"
+s);
//变量值还原
i =
1
;
s =
0
;
//2.do...while循环
do
{
s += i;
i +=
2
;
}
while
(i<=
100
);
System.out.println(
"do...while循环结果:"
+s);
//变量值还原
s =
0
;
//3.for循环
for
(i =
1
; i <=
100
; i+=
2
) {
s += i;
}
System.out.println(
"for循环结果:"
+s);
}
|
执行结果:
从上面的语法应该可以看出,循环主要有四个点:初值、条件、步长、循环体(内容)。那么这三种循环的语法有什么区别呢?
while循环:侧重于不确定循环次数的场合,先判断,如果条件成立则进入循环。
do...while循环:侧重于不确定循环次数的场合,先执行一次,之后如果条件成立则时入循环。
for循环:侧重于确定循环次数的场合。
与循环配合使用的还有两个关键字:continue和break;
他们的作用,看代码和结果吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public
static
void
main(String[] args) {
for
(
int
i =
0
; i <
10
; i++) {
if
(i==
5
){
continue
;
}
System.out.print(i+
","
);
}
System.out.println(
"\n======================="
);
for
(
int
i =
0
; i <
10
; i++) {
if
(i==
5
){
break
;
}
System.out.print(i+
","
);
}
}
|
结果:
注意到两个的区别了吧
运行continue后,就不再执行循环里面continue后面的代码,直接运行i++去了。
而运行break后,则直接跳出了循环,后面的都不执行了。
经典案例:登录功能,如果账号密码输入正确则登录成功,否则请再次输入密码。
分析:
登录时要输入几次账号密码?很明显不知道啊!!!所以for循环被排除了。
然后再判断,是要先输入账号密码后判断,还是先判断后再输入账号密码呢?
这也很明显,要先输入了才需要判断啊!!!所以while循环也被排除了。
最后就剩下do...while循环了。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public
static
void
main(String[] args) {
//模拟登录功能
//分析过程:
//1.定义保存账号和密码的变量
Scanner input =
new
Scanner(System.in);
String inLoginID;
String inLoginPWD;
//2.因为还没学习数据库,所以定义两个变量保存正确的账号和密码
String loginID =
"liergou"
;
String loginPWD =
"haha250"
;
//3.输入账号和密码
do
{
System.out.print(
"请输入账号:"
);
inLoginID = input.next();
System.out.print(
"请输入密码:"
);
inLoginPWD = input.next();
//4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法),
//如果相同等提示登录成功,循环结束,否则提示重新输入
if
(inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){
System.out.println(
"登录成功!"
);
break
;
}
else
{
System.out.println(
"账号和密码不匹配,请重新输入!"
);
}
}
while
(
true
);
}
|
如果你非要使用while和for,那··············当然也是可以滴,只不过代码复杂度会上升,特别是使用for来写的话会很奇怪,大伙可以看看:
这是使用while的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public
static
void
main(String[] args) {
//模拟登录功能
//分析过程:
//1.定义保存账号和密码的变量
Scanner input =
new
Scanner(System.in);
String inLoginID;
String inLoginPWD;
//2.因为还没学习数据库,所以定义两个变量保存正确的账号和密码
String loginID =
"liergou"
;
String loginPWD =
"haha250"
;
//3.输入账号和密码
System.out.print(
"请输入账号:"
);
inLoginID = input.next();
System.out.print(
"请输入密码:"
);
inLoginPWD = input.next();
while
(
true
){
//4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法),
// 如果相同等提示登录成功,循环结束,否则提示重新输入
if
(inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){
System.out.println(
"登录成功!"
);
break
;
}
else
{
System.out.println(
"账号和密码不匹配,请重新输入!"
);
//下面的代码重复了
System.out.print(
"请输入账号:"
);
inLoginID = input.next();
System.out.print(
"请输入密码:"
);
inLoginPWD = input.next();
}
}
}
|
下面是使用for的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
for
(;
true
;){
//4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法),
// 如果相同等提示登录成功,循环结束,否则提示重新输入
if
(inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){
System.out.println(
"登录成功!"
);
break
;
}
else
{
System.out.println(
"账号和密码不匹配,请重新输入!"
);
//下面的代码重复了
System.out.print(
"请输入账号:"
);
inLoginID = input.next();
System.out.print(
"请输入密码:"
);
inLoginPWD = input.next();
}
}
|