当前位置 : 主页 > 编程语言 > java >

Java从入门到实战总结-1.3、Java流程控制

来源:互联网 收集:自由互联 发布时间:2022-07-13
Java从入门到实战总结-1.3、Java流程控制 文章目录 ​​Java从入门到实战总结-1.3、Java流程控制​​ ​​1、接收用户输入​​ ​​2、执行结构概述​​ ​​3、if分支​​ ​​4、switch​


Java从入门到实战总结-1.3、Java流程控制


文章目录

  • ​​Java从入门到实战总结-1.3、Java流程控制​​
  • ​​1、接收用户输入​​
  • ​​2、执行结构概述​​
  • ​​3、if分支​​
  • ​​4、switch​​
  • ​​5、循环和while循环​​
  • ​​(1)、循环简介​​
  • ​​(2)、while循环​​
  • ​​6、do while循环​​
  • ​​7、for循环​​
  • ​​8、循环嵌套图形打印​​
  • ​​9、break和continue​​
  • ​​10、如何退出多重循环​​
  • ​​11、图形打印详解​​
  • ​​12、判断用户输入类型​​
  • ​​13、代码练习​​

1、接收用户输入

System类除了out和err两个输出流之外,还有in输入流的实例对象作为类成员,它可以接收用户的输入。

程序中用到了System类的输入流也就是类变量in,它可以接收用户的输入信息,并且是标准的输入流实例对象。另外Scanner类是Java的扫描器类,它可以从输入流中读取指定类型的数据或字符串。

说明:在使用Scanner类时,必须在源代码顶端导入这个类,导入语句为“import java.util.Scanner;”

package day3;

import java.util.Scanner;

public class demo1 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//用于接收各种数据类型,比如int
// System.out.println("请输入一段数字: ");
// int i = input.nextInt();
// System.out.println(i);

//接收文字和接收一行文字
//next会以空格或者回车结束
System.out.println("请输入next接收的内容:");
String str1 = input.next();
System.out.println(str1);

//nextLine和next不要同时使用,nextLine可以识别出来空格,直到回车结束
// System.out.println("清输入nextline接收的内容:");
// String str2 = input.nextLine();
// System.out.println(str2);
}
}

使用next:

Java从入门到实战总结-1.3、Java流程控制_java

使用nextLine:

Java从入门到实战总结-1.3、Java流程控制_i++_02

2、执行结构概述

1996 年,计算机科学家 Bohm 和 Jacopini 证明了:任何简单或复杂的算法都可以由顺序结构、分支结构和循环结构这三种基本结构组合而成。

它们的共同点是都包含一个入口和一个出口,它们的每个代码都有机会被执行,不会出现死循环。

顺序结构

  • 顺序结构是一种基本的控制结构,它按照语句出现的顺序执行操作

分支结构

  • 分支结构又被称为选择结构,根据条件成立与否来执行操作,

循环结构

  • 循环结构是一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。

3、if分支

if 条件结构是根据条件判断之后再做处理

if(条件语句){…}

if (条件语句){…}else{…}

if (条件语句){…}else if(条件语句){…}

if (条件语句){…}else if(条件语句){…}else{…}

例子:用户输入学生成绩,判断成绩是否及格,判断条件为 优良: > 90、良好:81-90、中:60-80、不及格:<60

package day3;

import java.util.Scanner;

public class Demo2 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("清输入成绩:");
int scores = input.nextInt();

//91优 81-90良 60-80中 60差
if(scores >= 91) {
System.out.println("您的成绩是优秀,继续加油哦!");
} else if(scores >= 81 & scores < 91) {
System.out.println("您的成绩是良好!还要努力哦!");
} else if(scores >= 60 & scores < 81) {
System.out.println("您的成绩是中等!还要加倍努力哦!");
} else {
System.out.println("您的成绩是差!准备补考吧!");
}
}
}

Java从入门到实战总结-1.3、Java流程控制_i++_03

4、switch

switch(表达式){

case 取值 1: 语句块 1;break;

case 取值 n: 语句块 n;break;

default: 语句块 n+1;break;

}

switch 语句有关规则

表达式的返回值必须是下述几种类型之一:int, byte, char, short,String;

case 子句中的取值必须是常量,且所有 case 子句中的取值应是不同的;

default 子句是可选的;

break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块;如果 case 后面没有写 break 则直接往下面执行!

Case 后面的执行体可写{ }也可以不写{ }

例题:多分支月份输出天数(充分利用语句特性)

package day3;

import java.util.Scanner;

public class Demo3 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入月份:");
int month = input.nextInt();

switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(month + "月共有 31 天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(month + "月共有 30 天");
break;
case 2:
System.out.println(month + "月共有 28 天");
break;
default :
System.out.println("友情提示,您输入有误!");
break;
}
}

}

Java从入门到实战总结-1.3、Java流程控制_java_04

5、循环和while循环

(1)、循环简介

循环语句功能

在循环条件满足的情况下,反复执行特定代码

循环语句分类

for 循环

while 循环

do/while 循环

(2)、while循环

符合条件,循环继续执行;否则,循环退出

特点:先判断,再执行

while语法:

while(条件表达式){

//语句块;

}

实现示例:

录入班级人数和学员成绩,计算班级学员的平均成绩

使用 while 循环的步骤

1、分析循环条件和循环操作

2、套用 while 语法写出代码

3、检查循环是否能够退出

package day3;

import java.util.Scanner;

public class Demo4 {

public static void main(String[] args) {
int sum = 0;
int score = 0;
int avg = 0;
int studentNum = 20;
int i = 0;
Scanner input = new Scanner(System.in);

while(i <= studentNum) {
System.out.print("请输入第" + i + "位同学的成绩:");
score = input.nextInt();
sum = sum + score;
i++;
}
avg = sum / studentNum;
System.out.println(avg);
}

}

Java从入门到实战总结-1.3、Java流程控制_java_05

6、do while循环

先执行一遍循环操作,符合条件,循环继续执行;否则,循环退出

特点:先执行,再判断

语法:

do {

循环操作

}while ( 条件表达式 );

while 循环和 do-while 循环的区别?

while:先判断条件,如果条件满足,再执行循环操作

do while:先执行一遍循环操作,然后再判读条件,如果条件满足,继续执行循环操作。

示例:

package day3;

public class Demo5 {

public static void main(String[] args) {
testWhile();
testDoWhile();
}

public static void testDoWhile() {
int i = 5;
System.out.println("测试do while");
do {
i++;
System.out.println(i);
} while (i < 5);
}

public static void testWhile() {
int i = 5;
System.out.println("测试while");
while(i < 5) {
i++;
System.out.println(i);
}
}
}

Java从入门到实战总结-1.3、Java流程控制_整除_06

7、for循环

语法:

for(初始化参数;判断条件 ;更新循环变量){

循环体;

}

应用举例:

package day3;

public class Demo6 {

public static void main(String[] args) {
//打印文字从0到9
int i = 0;
for(i = 0; i < 10; i++) {
System.out.println(i);
}
}

}

Java从入门到实战总结-1.3、Java流程控制_i++_07

8、循环嵌套图形打印

主要利用for循环的嵌套执行来进行,需要仔细理解下列结论:

  • 外层循环控制行数
  • 内层循环控制列数
package day3;

public class Demo7 {

public static void main(String[] args) {
//循环嵌套

//外层循环控制行数
for(int i = 0;i < 10; i++) {
//内层循环控制列数
for(int j = 0; j < 10; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}

Java从入门到实战总结-1.3、Java流程控制_i++_08

9、break和continue

  • break是用于终止本轮所有循环,即不执行本次循环中break后面的语句,直接跳出循环
  • continue是用于终止本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断
package day3;

public class Demo8 {
/**
* break与continue语句
* break是用于终止本轮所有循环,即不执行本次循环中break后面的语句,直接跳出循环
* continue是用于终止本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断
*/
public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
if(i == 5) {
break;
}
if(i == 3) {
continue;
}
System.out.println(i);
}
}

}

Java从入门到实战总结-1.3、Java流程控制_java_09

10、如何退出多重循环

利用命名空间的特性对一段循环进行命名后在break时判断退出哪一个空间的循环。

package day3;

public class Demo9 {

public static void main(String[] args) {
First:for(int i = 0; i < 10; i++) {
for(int j = 0;j < 10; j++) {
System.out.println("i="+i+", j="+j);
if(i == 5 && j == 5) {
//不加该空间First的话break只会跳出该内层for循环
break First;
}
}
}

}

}

Java从入门到实战总结-1.3、Java流程控制_整除_10

11、图形打印详解

打印直角三角形、等腰三角形、菱形

package day3;

public class Demo10 {

public static void main(String[] args) {
//直角三角形
for(int i = 1; i < 6; i++) {
for(int j = 0; j < i;j++) {
System.out.print("* ");
}
System.out.println();
}

//等腰三角形
for(int i = 0; i < 5; i++) {
for(int j = i+1; j < 5;j++) {
System.out.print(" ");
}
for(int j = 0; j < i*2 + 1;j++) {
System.out.print("*");
}
System.out.println();
}

//菱形
int size = 9;
for(int i = 0; i < size/2 + 1; i++) {
for(int j = i+1; j < size/2 + 1;j++) {
System.out.print(" ");
}
for(int j = 0; j < i*2 + 1;j++) {
System.out.print("*");
}
System.out.println();
}
for(int i = size/2 + 1; i < size; i++) {
for (int j = 0; j < i - size / 2; j++) {
System.out.print(" ");
}
for (int j = 0; j < 2 * size - 1 - 2 * i; j++) {
System.out.print("*");
}
System.out.println();
}
}

}

Java从入门到实战总结-1.3、Java流程控制_java_11

12、判断用户输入类型

input的接口进行判断,比如input.hasNextInt()

package day3;

import java.util.Scanner;

public class Demo11 {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字:");

if(input.hasNextInt()) {
int num = input.nextInt();
System.out.println("你输入的是:"+num);
} else {
System.out.println("你输入的类型错误");
}
}

}

Java从入门到实战总结-1.3、Java流程控制_java_12

13、代码练习

1、选择结构训练

1、某市出租车,起步价(2 公里以内)为 8 元,超过 2 公里的按照每公里 4.5 元计算。要求根据路程计

算费用。

2、输入年份,判断输入的年份是否是闰年。(闰年的条件是能被 4 整除,但不能被 100 整除;或能被

400 整除。)

3、要求输入月份,判断该月所处的季节并输出季节(假设:12、1、2 月为冬季,依次类推)

4、根据《国家电网销售电价表》,居民生活用电按 3 个梯度收费:月用电量 150 千瓦时及以下部分,

每千瓦时 0.43 元,151—400 千瓦时部分为 0.45 元,401 千瓦时以上部分为 0.52 元,请编写程序,当输入

用户的用电量时,计算出所需付的费用。package day3;

import java.util.Scanner;

public class Homework10101003 {

/**
* switch分支语句练习:
* 1、某市出租车,起步价(2 公里以内)为 8 元,超过 2 公里的按照每公里 4.5 元计算。要求根据路程计
算费用。
2、输入年份,判断输入的年份是否是闰年。(闰年的条件是能被 4 整除,但不能被 100 整除;或能被
400 整除。)
3、要求输入月份,判断该月所处的季节并输出季节(假设:12、1、2 月为冬季,依次类推)
4、根据《国家电网销售电价表》,居民生活用电按 3 个梯度收费:月用电量 150 千瓦时及以下部分,
每千瓦时 0.43 元,151—400 千瓦时部分为 0.45 元,401 千瓦时以上部分为 0.52 元,请编写程序,当输入
用户的用电量时,计算出所需付的费用。
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入打车公里数:");
int distance = input.nextInt();
float money = taximeterSys(distance);
System.out.println("需要打车费用:"+money+"元");

System.out.println("请输入要判断闰年的年份:");
int year = input.nextInt();
System.out.println(year+"是否是闰年:"+isLeapYear(year));

System.out.println("请输入要判断季节的月份:");
int month = input.nextInt();
System.out.println(month+"月是:"+judgeSeason(month));

System.out.println("请输入电量:");
int elec = input.nextInt();
double elec_money = calculationElectricity(elec);
System.out.println("需要电费:"+elec_money+"元");
}

/**
* 某市出租车,起步价(2 公里以内)为 8 元,超过 2 公里的按照每公里 4.5 元计算。要求根据路程计
算费用。
参数:distance:路程
返回值:正确返回需要的费用,错误返回-1
*/
public static float taximeterSys(int distance) {
if(distance >0 && distance <= 2) {
return 8;
} else if(distance > 2) {
int tmp = distance - 2;
return (float) (8 + (tmp * 4.5));
}

return -1;
}

/**
* 输入年份,判断输入的年份是否是闰年。(闰年的条件是能被 4 整除,但不能被 100 整除;或能被
400 整除。)
参数:year:年份
返回值:是闰年返回true,不是返回false
*/
public static boolean isLeapYear(int year) {
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
return true;
}

return false;
}

/**
* 要求输入月份,判断该月所处的季节并输出季节(假设:12、1、2 月为冬季,依次类推)
* 参数:month:月份
* 返回值:正确返回字符串“春、夏、秋、冬”,错误返回“NULL”
*/
public static String judgeSeason(int month) {
//这里我们使用switch去实现,当然也可以使用if条件判断
switch(month) {
case 3:
case 4:
case 5:
return "春";
case 6:
case 7:
case 8:
return "夏";
case 9:
case 10:
case 11:
return "秋";
case 12:
case 1:
case 2:
return "冬";
}

return "NULL";
}

/**
* 根据《国家电网销售电价表》,居民生活用电按 3 个梯度收费:月用电量 150 千瓦时及以下部分,
每千瓦时 0.43 元,151—400 千瓦时部分为 0.45 元,401 千瓦时以上部分为 0.52 元,请编写程序,当输入
用户的用电量时,计算出所需付的费用。
参数:electricity:电量 千瓦
返回值:正确返回电费,错误返回-1
*/
public static double calculationElectricity(int electricity) {
if(electricity > 0 && electricity <= 150) {
return (0.43 * electricity);
} else if(electricity > 150 && electricity <= 400) {
return (0.43 * 150 + (electricity - 150) * 0.45);
} else if(electricity > 400) {
return (0.43 * 150 + 0.45 * (400 - 150) + (electricity - 400) * 0.52);
}

return -1;
}
}

Java从入门到实战总结-1.3、Java流程控制_i++_13

2、while

人工智能的概念刚兴起时,网上流传了一段价值一个亿的代码,如下图:

Java从入门到实战总结-1.3、Java流程控制_java_14

运行效果如下图:

Java从入门到实战总结-1.3、Java流程控制_java_15

package day3;

import java.util.Scanner;

public class Homework10101004 {

public static void main(String[] args) {
System.out.println("请开始输入文字进行AI交互,结束输入后按下enter:");
AI();
}

/**
* 简单的问句交互AI程序
*/
public static void AI() {
Scanner scanner = new Scanner(System.in);
String question;

while(true) {
//考虑到字中可能有空格,使用nextLine可能更好一些
question = scanner.nextLine();
//去调字符串中的吗
question = question.replace("吗", "");
//将字符串中的我替换为我也
question = question.replace("我", "我也");
//中文的问号替换中文叹号
question = question.replace("?", "!");
//英文的问号替换英文叹号
question = question.replace("?", "!");
System.out.println(question);
}

}

}

Java从入门到实战总结-1.3、Java流程控制_i++_16

3、计算应缴金额

商场根据会员积分打折:

2000 分以内打 9 折,

4000 分以内打 8 折,

8000 分以内打 7.5 折,

8000 分以上打 7 折,使用 if-else-if 结构,实现手动输入购物金额和积分,

计算出应缴金额

4、计算该年该月天数

一年中有 12 个月,而每个月的天数是不一样的。其中大月 31 天,分别为

1,3,5,7,8,10,12 月,小月 30 天,分别 为 4,6,9,11 月。还有二月比较特殊,平

年的二月只有 28 天,而闰年的二月有 29 天,由用户在控制台输入年份和月份,

程序计算该年该月的天数。

5、图形打印任务

在控制台中,编写三个 Demo,分别输出如下图形:

Java从入门到实战总结-1.3、Java流程控制_java_17

6、打印九九乘法表 ,效果如图:

Java从入门到实战总结-1.3、Java流程控制_java_18

7、打印三位数中的所有水仙花数

所谓“水仙花数”即一个整数满足其值等于各个数位的立方和。

如: 153 是一个水仙花数,因为 153= 1³+5³+3³

package day3;

import java.util.Scanner;

public class Homework10101005 {

public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//作业1:
System.out.println("请输入积分:");
int integral = scanner.nextInt();
System.out.println("请输入购物金额:");
double money = scanner.nextDouble();
System.out.println("应缴金额:"+countMoney(money, integral));

//作业2:
System.out.println("请输入年份:");
int year = scanner.nextInt();
System.out.println("请输入月份:");
int month = scanner.nextInt();
System.out.println(year+"年"+month+"月"+getMonthNum(year, month)+"天");

//作业3:
printGraph();

//作业4:
printNineNineMutlTable();

//作业5:
printDaffodilsNum();
}

/**
* 计算应缴金额
商场根据会员积分打折:
2000 分以内打 9 折,
4000 分以内打 8 折,
8000 分以内打 7.5 折,
8000 分以上打 7 折,使用 if-else-if 结构,实现手动输入购物金额和积分,
计算出应缴金额

参数:money:钱;
integral:积分
返回值:正确的则返回折扣价,错误则返回-1
*/
public static double countMoney(double money, int integral) {
if(integral >= 0 && integral <= 2000) {
return money * 0.9;
} else if(integral > 2000 && integral <= 4000) {
return money * 0.8;
} else if(integral > 4000 && integral <= 8000) {
return money * 0.75;
} else if(integral > 8000) {
return money * 0.7;
}

return -1;
}

/**
* 输入年份,判断输入的年份是否是闰年。(闰年的条件是能被 4 整除,但不能被 100 整除;或能被
400 整除。)
参数:year:年份
返回值:是闰年返回true,不是返回false
*/
public static boolean isLeapYear(int year) {
if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) {
return true;
}

return false;
}

/**
* 计算该年该月天数
一年中有 12 个月,而每个月的天数是不一样的。其中大月 31 天,分别为
1,3,5,7,8,10,12 月,小月 30 天,分别 为 4,6,9,11 月。还有二月比较特殊,平
年的二月只有 28 天,而闰年的二月有 29 天,由用户在控制台输入年份和月份,
程序计算该年该月的天数。

参数:year:年份
month:月份
返回值:正确返回对应年份月份的天数,否则返回-1
*/
public static int getMonthNum(int year, int month) {
if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10
|| month == 12) {
return 31;
} else if(month == 4 || month == 6 || month == 9 || month == 11) {
return 30;
} else if(month == 2) {
if(isLeapYear(year))
return 29;
return 28;
}

return -1;
}

/**
* 打印demo中的图形,利用for循环嵌套
*/
public static void printGraph() {
//第一种:五行五列的直接三角形
System.out.println("打印图形1:");
for(int i = 1; i <= 5; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}

//第二种:把第一种上下颠倒
System.out.println("打印图形2:");
for(int i = 1; i <= 5; i++) {
for(int j = 5; j >= i; j--) {
System.out.print("*");
}
System.out.println();
}

//第三种:打印五行9列的等腰三角形
System.out.println("打印图形3:");
for(int i = 1; i <= 5; i++) {
for(int j = 5; j > i; j--) {
System.out.print(" ");
}
for(int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}

/**
* 打印九九乘法表
*/
public static void printNineNineMutlTable() {
System.out.println("打印九九乘法表:");
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();
}
}

/**
* 计算一个数的各位的立方和
* */
public static int addUpTheCubedNum(int num) {
int sum = 0;
int temp = num;

while (temp != 0) {
sum += ((temp % 10)*(temp % 10)*(temp % 10));
temp /= 10;
}

return sum;
}

/**
* 打印三位数中的所有水仙花数
所谓“水仙花数”即一个整数满足其值等于各个数位的立方和。
如: 153 是一个水仙花数,因为 153= 1³+5³+3³
*/
public static void printDaffodilsNum() {
int num = 100;
System.out.println("打印三位数中的水仙花数:");
while(num <= 999) {
if(addUpTheCubedNum(num) == num) {
System.out.print(num+" "+"\t");
}
num++;
}
}
}

Java从入门到实战总结-1.3、Java流程控制_整除_19


【本文转自:美国服务器 http://www.558idc.com/mg.html欢迎留下您的宝贵建议】
上一篇:Java从入门到实战总结-1.2、Java基础语法
下一篇:没有了
网友评论