提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
1.输入、输出语句
输出语句:
public class Demo01 {
public static void main(String[] args) {
// 换行打印
System.out.println("换行打印");
// 不换行打印
System.out.print("不换行打印");
System.out.print("不换行打印");
}
}
输入语句:
// 1.导包:improt java.util.Scanner.
import java.util.Scanner;
/**
* 控制台输入的步骤:
* 1.导包:import java.util.Scanner;
* 2.创建键盘录入Scanner对象
* 3.调用对象下的方法
* nextInt():输入一个int类型的数
* next() : 输入一个字符串,回车结束录入,遇到空格结束输出
* nextLine() : 输入一个字符串,以回车结束录入
* 4.打印内容
*/
public class Demo01 {
public static void main(String[] args) {
// 2.创建键盘录入对象
Scanner scanner = new Scanner(System.in);
// 3.调用方法,打印输出
// 输入一个整型数字:nextInt();
System.out.println("请输入一个数字:");
int num = scanner.nextInt();
System.out.println("num = " + num);
// 输入一个字符串,只输出空格前的内容:next();
/*
System.out.println("请输入字符串:");
String str = scanner.next();
System.out.println("str = " + str);
*/
// 请输入字符串,要求可以录入空格:nextLine();
/*
System.out.println("请输入字符串:");
String s = scanner.nextLine();
System.out.println("s = " + s);
*/
}
}
注意事项:
①、若next()、nextLine()同时存在时,会出现一个bug,就是执行next()时,按下回车直接可以结束nextLin语句。
解决方式:不同的输入方式,创建不同的对象
②、next、nextLine区别:
相同:同时输入一个字符串,回车结束录入
不同:next遇到空格就结束输出,nextLine
2.顺序结构
**概述:**顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多 数的代码都是这样执行的。
程序执行的流程图:
public class Demo01 {
public static void main(String[] args) {
System.out.println("语句1");
System.out.println("语句2");
System.out.println("语句3");
System.out.println("语句4");
}
}
3.分支(选择)结构
3.1 if语句
格式:
if(条件表达式){
语句体;
}
执行流程:
①、判断条件表达式的结果,结果有两种true 或 false
②、如果结果为true,就执行if中的语句体。
③、如果结果为false,就不执行if中的语句体。继续往后执行其它内容。
public class Demo01 {
public static void main(String[] args) {
// 判断年龄是否满足上网条件
int age = 19;
// if判断语句
if (age >= 18){
System.out.println("满足条件,可以上网!");
}
}
}
3.2 if…else…语句
格式:
if(条件判断){
语句体1;
}else{
语句体2;
}
执行流程:
①、判断条件表达式的结果,结果有两种true 或 false
②、若判断表达式结果为true,则执行语句体1。
③、若判断表示式结果为false,则执行语句体2.
④、执行完if…else…后,继续执行后续的内容。
public class Demo02 {
public static void main(String[] args) {
// 判断年龄是否满足上网条件
int age = 17;
// if判断语句
if (age >= 18){
System.out.println("满足条件,可以上网!");
}else {
System.out.println("不满足条件,不可以上网!");
}
}
}
3.3 if…else if…else…语句
格式:
if(条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}
...
else{
语句体3;
}
执行流程:
①、首先计算关系表达式1的值
②、如果值为true就执行语句体1;
如果值为false就计算关系表达式2的值
③、如果值为true就执行语句体2;如果值为false就计算关系表达式3的值
④…
⑤、如果没有任何关系表达式为true,就执行语句体n+1。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HixHUK2b-1660637652332)(./4.if…elseif…else语句.png)]
public class Demo03 {
public static void main(String[] args) {
int score = 65;
if(score >= 90 && score <= 100){
System.out.println("优秀");
}else if (score >= 80 && score <= 89){
System.out.println("良好");
}else if (score >= 70 && score <= 79){
System.out.println("中等");
}else if (score >= 60 && score <= 69){
System.out.println("及格");
}else if (score >= 0 && score <= 59){
System.out.println("请努力加油");
}else{
System.out.println("成绩有误!");
}
}
}
3.4 if…else嵌套使用
需求:小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,假如你可以控制小明 的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。
分析:
①小明的考试成绩未知,可以使用键盘录入的方式获取值
②由于奖励种类较多,属于多种判断,采用if…else…if格式实现
③为每种判断设置对应的条件
④为每种判断设置对应的奖励
public class Demo04 {
public static void main(String[] args) {
// 1. 使用Scanner录入考试成绩
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的成绩:");
int score = sc.nextInt();
// 2. 判断成绩是否在合法范围内 0~100
if(score >=0 && score <= 100){
// 合法成绩
// 3. 在合法的语句块中判断成绩范围符合哪一个奖励
if(score >= 95 && score <= 100){
System.out.println("自行车一辆");
}else if(score >= 90 && score <= 94){
System.out.println("游乐场一次");
}else if(score >= 80 && score <= 89){
System.out.println("变形金刚一个");
}else {
System.out.println("挨顿揍, 这座城市又多了一个伤心的人~");
}
}else{
// 非法的话, 给出错误提示
System.out.println("您的成绩输入有误!");
}
}
}
3.5 switch语句
格式:
switch(表达式){
case 常量值1:
语句块1;
[break;]// 遇到break,结束当前case语句
case 常量值2:
语句块2;
[break;]
...
[default:
语句块n+1;//如果上述的常量值与case均不匹配,则执行本代码
[break;]]
}
- switch表示这是switch语句
表达式的取值:byte,short,char,int
JDK5以后可以是枚举
JDK7以后可以是String
- case后面跟的是要和表达式进行比较的值
- 语句体部分可以是一条或多条语句
- break表示中断,结束的意思,可以结束switch语句
- default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似
执行过程:
首先计算出表达式的值
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
/**
* 需求:键盘录入星期数,显示今天的减肥活动
* 周一:跑步
* 周二:游泳
* 周三:慢走
* 周四:动感单车
* 周五:拳击
* 周六:爬山
* 周日:好好吃一顿
*/
public class Demo05 {
public static void main(String[] args) {
// 1. 键盘录入星期数据,使用变量接收
Scanner sc = new Scanner(System.in);
System.out.println("请输入");
int week = sc.nextInt();
// 2. 多情况判断,采用switch语句实现
switch(week){
// 3. 在不同的case中,输出对应的减肥计划
case 1:
System.out.println("跑步");
break;
case 2:
System.out.println("游泳");
break;
case 3:
System.out.println("慢走");
break;
case 4:
System.out.println("动感单车");
break;
case 5:
System.out.println("拳击");
break;
case 6:
System.out.println("爬山");
break;
case 7:
System.out.println("好好吃一顿");
break;
default:
System.out.println("您的输入有误");
break;
}
}
}
4.循环结构
4.1 for循环
**概述:**循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句, 当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直 执行下去,形 成死循环。
格式:
for (初始化语句;条件判断语句;条件控制语句) {
循环体语句;
}
解释:
初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样
条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去
循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情
条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去
执行过程:
①执行初始化语句
②执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
/**
* 在控制台打印十次HelloWord
*/
public class Demo01 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("Hello Word");
}
}
}
/**
* 输出 1-100的和
*/
public class Demo02 {
public static void main(String[] args) {
int sum = 0;// 计算总和
// 循环计算
for (int i = 1; i <= 100; i++) {
sum += i;
}
// 打印输出总和
System.out.println("sum = " + sum);
}
}
/**
* 需求:在控制台输出所有的“水仙花数”
* 解释:什么是水仙花数?
* 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数
* 例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153
* 思路:
* 1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取
* 2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数
*/
public class Demo03 {
public static void main(String[] args) {
//输出所有的水仙花数必然要使用到循环,遍历所有的三位数,三位数从100开始,到999结束
for (int i = 100; i < 1000; i++) {
//在计算之前获取三位数中每个位上的值
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
//判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
//输出满足条件的数字就是水仙花数
System.out.println(i);
}
}
}
}
4.2 while循环
格式:
初始化语句;
while (条件判断语句) {
循环体语句;
条件控制语句;
}
执行流程:
①执行初始化语句
②执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行
③执行循环体语句
④执行条件控制语句
⑤回到②继续
/**
* 打印10次HelloWord
*/
public class Demo01 {
public static void main(String[] args) {
int count = 0;
while (count < 10){
System.out.println("Hello Word");
count++;
}
}
}
/**
* 输出 1-100的和
*/
public class Demo02 {
public static void main(String[] args) {
int sum = 0;
int count = 0;
while (count <= 100){
sum += count;
count++;
}
System.out.println("sum = " + sum);
}
}
/**
* 需求:在控制台输出所有的“水仙花数”
* 解释:什么是水仙花数?
* 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数
* 例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153
* 思路:
* 1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取
* 2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数
*/
public class Demo03 {
public static void main(String[] args) {
int i = 100;
while (i <= 1000){
//在计算之前获取三位数中每个位上的值
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
//判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
//输出满足条件的数字就是水仙花数
System.out.println(i);
}
i++;
}
}
}
4.3 do…while循环
格式:
初始化语句;
do {
循环体语句;
条件控制语句;
}while(条件判断语句);
执行流程:
① 执行初始化语句
② 执行循环体语句
③ 执行条件控制语句
④ 执行条件判断语句,看其结果是true还是false 如果是false,循环结束 如果是true,继续执行
⑤ 回到②继续
/*
在控制台打印十次HelloWord
*/
public class Demo01 {
public static void main(String[] args) {
int count = 0;
do {
System.out.println("Hello Word");
count++;
}while (count < 10);
}
}
/**
* 输出 1-100的和
*/
public class Demo02 {
public static void main(String[] args) {
int sum = 0;
int count = 0;
do {
sum += count;
count++;
}while (count <= 100);
System.out.println("sum = " + sum);
}
}
/**
* 需求:在控制台输出所有的“水仙花数”
* 解释:什么是水仙花数?
* 水仙花数,指的是一个三位数,个位、十位、百位的数字立方和等于原数
* 例如 153 3*3*3 + 5*5*5 + 1*1*1 = 153
* 思路:
* 1. 获取所有的三位数,准备进行筛选,最小的三位数为100,最大的三位数为999,使用for循环获取
* 2. 获取每一个三位数的个位,十位,百位,做if语句判断是否是水仙花数
*/
public class Demo03 {
public static void main(String[] args) {
int i = 100;
do {
//在计算之前获取三位数中每个位上的值
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
//判定条件是将三位数中的每个数值取出来,计算立方和后与原始数字比较是否相等
if (ge * ge * ge + shi * shi * shi + bai * bai * bai == i) {
//输出满足条件的数字就是水仙花数
System.out.println(i);
}
i++;
}while (i < 1000);
}
}
三种循环的区别
for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
do…while循环先执行一次循环体,然后判断条件是否成立,是否继续执行循环体(先执行后判断)
for循环和while的区别
条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访 问到了 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变 量还可以继续使用
死循环(无限循环)的三种格式
- for( ; ; ) {}
- while(true){}
- do {} while(true);
4.4 循环嵌套使用
格式:
for(初始化语句①; 循环条件语句②; 控制语句⑦) {
for(初始化语句③; 循环条件语句④; 控制语句⑥) {
循环体语句⑤;
}
}
外循环控制行数,内循环控制列数(外循环控制打印几行,内循环控制每行打印几列)
外循环执行一次,内循环执行一轮(时钟:时针走一个格子,分针走一圈)。
/**
*如图:
* *****
* *****
* *****
* *****
*/
public class Demo01 {
public static void main(String[] args) {
for (int i = 1; i <= 4; i++) { //外循环决定的是行数
for (int j = 1; j <= 5; j++) { //内循环决定的是列数
System.out.print("*");
}
System.out.println();
}
}
}
/**
* 分析:
* - 九九乘法表中的每一个公式当做一个*,结构和上面的案例中直角三角形相似
* - 尝试先完成9层直角三角形的图案的输出
* - 将*用实际公式代替
* *
* **
* ***
* 1 * 1 = 1
* 1 * 2 = 2 2 * 2 = 4
* 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
* ...
* 保持积极的心态,从熟悉的知识点着手,逐渐解决问题
*/
public class Demo02 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) { //行数
for (int j = 1; j <= i; j++) { //列数
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println();
}
}
}
4.5 break、return、continue
break: 可以作用于循环、switch语句。作用与循环是结束该循环,继续执行循环后面的内容。
continue: 只能作用于循环,是跳出当前循环,继续下一次循环。
return: 作用于方法,结束该方法的调用并返回相应的返回值。