键盘录入的基本格式
- 为什么要键盘录入数据?
程序有时需要与用户进行交互,从而更好地实现需求,使得程序变得灵活。
- 如何实现录入数据
package MyDemo;
import java.util.Scanner;
//导入包的格式是固定的(也可以使用自动提示添加)
public class MyTest2
{
public static void main(String[] args)
{
//先创建一个用来接收用户输入的录入对象
Scanner sc = new Scanner(System.in);
//通过对象获取从键盘输入的数据
int i = sc.nextInt();
}
}
流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。
顺序结构
程序中最简单最基本的流程控制。从上往下,依次执行。程序中大多数的代码都是这样执行的。
public class MyTest1
{
public static void main(String[] args)
{
System.out.println("床前明月光,疑是地上霜");
System.out.println("举头望明月,低头思故乡");
}
}
/* 输出结果:
床前明月光,疑是地上霜
举头望明月,低头思故乡
*/
选择结构
选择语句的分类:if语句、switch语句
if语句
格式1
if(比较表达式或者是boolean类型的值) //括号中的值为true的时候执行语句体
{
语句体;
}
package MyDemo;
public class MyTest3
{
public static void main(String[] args)
{
if(5>3)
System.out.println("是的,答案正确!");
}
}
//输出结果是:是的,答案正确!
格式2
if(比较表达式)//表达式结果为true执行语句体1
{
语句体1;
}
else //表达式结果为false执行语句体2
{
语句体2;
}
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int num1=sc.nextInt();
System.out.println("请输入第二个数字:");
int num2=sc.nextInt();
if(num1>num2)
{
System.out.println("第一个数字大于第二个数字");
}
else
System.out.println("第二个数字大于第一个数字");
}
}
/*输出结果:
请输入第一个数字:
34
请输入第二个数字:
23
第一个数字大于第二个数字*/
格式3
//谁括号中的表达式为true,执行谁的语句体,如果谁都不满足,执行else中的语句体
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
.............
else {
语句体n+1;
}
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
int num1=sc.nextInt();
System.out.println("请输入第二个数字:");
int num2=sc.nextInt();
if(num1>num2)
{
System.out.println("第一个数字大于第二个数字");
}
else if(num1<num2)
System.out.println("第二个数字大于第一个数字");
else
System.out.println("两个数字相等");
}
}
/*输出结果:
请输入第一个数字:
12
请输入第二个数字:
12
两个数字相等*/
switch语句
基本格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
....
default:
语句体n+1;
break;
}
使用该语句,我们需要注意:
1、switch括号里面可以是常量,也可以是变量,里面允许的数据类型有:byte
、short
、int
、char
、string
、枚举
;
2、case关键字后面只能跟常量,而且多个case后面的值不能出现相同的值;
3、default可以省略,但是不建议省略,当程序开始执行该语句发现没有case后面的常量可以与之匹配,就会执行default后面的语句;
4、break关键字可以省略,但此时会发生case穿透现象,就是直到遇到一个break或者语句执行完之后才会退出该语句,我们可以利用这一现象,根据自己的需求设计程序;
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
int x = 2;
int y = 3;
switch(x)
{
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println("y="+y);
}
}
//输出的结果为:y=6
/*x首先与case关键字后面的常量进行匹配,发现没有与之对应的常量,
开始执行default语句,但此时执行完default语句却发现没有遇到break,
程序按照顺序结构往下面执行,直到switch语句结束,这就是case穿透现象*/
循环语句
循环语句在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码称为循环体语句;
必须存在循环控制语句,否则循环将一直执行下去,形成死循环;
- 循环语句分为:
for循环、while循环、do-while循环
- 控制跳转语句的关键字:
break、continue、return
for循环
for(初始化表达式语句;判断条件语句;控制条件语句)
{//如果判断条件的语句为true就执行循环体语句,否则就退出循环
循环体语句;
}
执行流程:
a:执行初始化表达式语句
b:执行判断条件语句,看其返回值是true还是false
如果是true,就继续执行
如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到b继续。
注意事项:
初始化表达式语句只执行一次
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
int dight=0,ten=0,hundred=0;
int count=0;//统计水仙花数的个数
System.out.println("打印出所有的水仙花数:");
for(int i=100;i<1000;i++)
{
dight=i%10;
ten=i%100/10;
hundred=i/100;
if(i==dight*dight*dight+ten*ten*ten+hundred*hundred*hundred)
{
System.out.println(i);
count++;
}
}
System.out.println("水仙花数共有:"+count+"个");
}
}
/*输出结果:
打印出所有的水仙花数:
153
370
371
407
水仙花数共有:4个*/
while循环
初始化条件语句;
while(判断条件语句)
{//程序先判断条件语句是否为true,是就执行循环体,否则不进入循环
循环体语句;
控制条件语句;
}
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
int sum=0,i=0;
System.out.println("求出1-100之和:");
while(i<=100)
{
sum+=i;
i++;
}
System.out.println("1-100的和为:"+sum);
}
}
/*输出语句为:
求出1-100之和:
1-100的和为:5050*/
do-while循环
格式:
初始化条件语句;//程序先执行初始化条件语句;
//再执行循环体语句;
do {
循环体语句;
控制条件语句;//执行控制条件语句;
}while(判断条件语句);//执行判断条件语句,如果为true继续执行,否则跳出循环
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
int sum=0,i=0;
System.out.println("求出1-100之和:");
do
{
sum+=i;
i++;
}while(i<100);
System.out.println("1-100的和为:"+sum);
}
}
/*输出结果:
求出1-100之和:
1-100的和为:5050*/
三种语句的区别
- for循环:提前直到循环的次数
- while循环:先判断,后执行。如果你想在循环结束之后继续使用控制条件的那个变量,使用while循环
- do-while循环:至少执行一次循环体,先执行后判断
循环结构中注意死循环
死循环:
没有循环控制语句,循环永远在执行,因此一定要注意程序不能存在死循环;
//以下是死循环的案例:
package MyDemo;
import java.util.Scanner;
public class MyTest1
{
public static void main(String[] args)
{
int sum=0,i=0;
System.out.println("求出1-100之和:");
while(i<=100)
{
sum+=i;//循环中没有控制语句,循环永远无法停止
}
System.out.println("1-100的和为:"+sum);
}
}
控制跳转语句的三个关键字
break:
- 与case(default)搭配使用,退出选择语句;
- 用在循环语句里面,退出循环语句
continue:
- 用在循环语句里面,结束本次循环,执行下一次循环
return:
- 用在方法里面来结束方法或者带回一个返回值