一、选择结构
1、if语句
if语句是指如果满足某种条件,就进行某种处理。
例如,如果晚上下雨,那么就不出去了
分析:”如果“相当于Java版if,”晚上下雨“是判断条件,需要用()装起来,“不出去了”是执行语句,需要放在{}中,修改后的伪代码如下:
如果(晚上下雨){
就不出去了
}
语法:
if (条件语句){//条件语句为布尔类型的值(true、false)
执行语句;
……
}
执行流程图:
示例:
package com.day3.选择;
public class IFdome01 {
public static void main(String[] args) {
int a = 5;
if (a < 10){
a++;
}
System.out.println("a=" + a);
}
}
运行结果:
分析:上述代码定义了一个变量a,初始值为5。判断条件中if是判断a是否小于10,
a<10 条件成立
执行{}中语句
变量a的值开始自增(没有continue等条件,所以只进行一次自增)
2、if…else语句
if… else语句是指如果满足某种条件,就进行某种处理,否则就进行另一种处理。
语法格式:
if(判断条件){
执行语句1
。。。
}else{
执行语句2
……
}
执行流程图:
示例:
package com.day3.选择;
public class Ifdome02 {
public static void main(String[] args) {
int num = 19;
if (num % 2 == 0){
// 判断条件成立,num被2整除
System.out.println("num是一个偶数");
}else{
System.out.println("num是一个奇数");
}
}
}
代码分析:
初始变量num为int类型,并初始化(赋值)
判断变量num能否被2整除
能被整除-输出对应语句
不能(else)整除-输出对应语句
3、if..else if… else…语句
用于对多个条件进行判断,进行多种不同的处理
例如:判断变量gender(性别),如果值为1输出男,值为2输出女,值为1、2之外输出其他。
执行流程图:
示例:
package com.day3.选择;
public class IFdome03 {
public static void main(String[] args) {
// 初始化gender
int gender = 1;
if ( gender == 1){
System.out.println("我是男孩子");
}else if (gender == 0){
System.out.println("我是其他性别");
}else{
System.out.println("我是女孩子");
}
}
}
4、if中嵌套语句
语法格式:
If(条件1){
If(条件2){
}else{
否则情况1
}
}else{
否则情况2
}
示例:如果今天是工作日,天气阴,需要上班。工作日天气爽快,可能需要加班,如果不是工作日,就可以自由玩耍啦。
package com.day3.选择;
public class dometest {
public static void main(String[] args) {
// 初始化变量today和weather
String today = "工作日";
String weather = "阴天";
if (today.equals("工作日")){
if (weather.equals("阴天")){
System.out.println("需要上班");
}else{
System.out.println("可能需要加班");
}
}else{
System.out.println("大肆出去放松吧");
}
}
}
运行结果:
5、三元运算
1)三元运算符,它和if-else语句类似
语法如下:
判断条件 ? 表达式1 : 表达式2
示例
使用if-else语句
int x = 0;
int y = 1;
int max;
if (x > y) {
max = x;
}else{
max = y;
}
System.out.println(max);
}
}
使用三元运算符
package Java基础.day02;
public class Sanyuandome01 {
public static void main(String[] args) {
int x = 0;
int y = 1;
int max = x > y ? x : y;
System.out.println(max);
}
}
2)三元运算符嵌套
示例:判断性别
public class Sanyuandome02 {
public static void main(String[] args) {
int gender = 2;
//先判断等于【1】 的情况,在判断 等于【2】,如果两个1,2都不满足,那么就是【其他】
String genderStr = (gender == 1) ? "男": (gender == 2)?"女":"其它";
System.out.println(genderStr);
}
}
练习1:
在程序中使用数字1~7来表示星期一到星期天,根据某个输入的数字来输出对应中文格式的星期值,例如输入1:输出是星期一
import java.util.Scanner;
public class lianxidome01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字");
int day = sc.nextInt();
if(day == 0){
System.out.println("星期天");
}else if(day == 1){
System.out.println("星期一");
}else if (day == 2){
System.out.println("星期二");
}else if (day == 3){
System.out.println("星期三");
}else if (day == 4){
System.out.println("星期四");
}else if (day == 5){
System.out.println("星期五");
}else if (day == 6) {
System.out.println("星期六");
}
}
}
练习2:
public class Lianxidome02 {
public static void main(String[] args) {
int month = 11;
if (month > 12 || month < 1){
System.out.println("没有这个季节");
}else if (month >= 3 && month <= 5){
System.out.println("春天");
}else if (month >= 6 && month <= 8){
System.out.println("夏天");
}else if (month >= 9 && month <= 11){
System.out.println("秋天");
}else {
System.out.println(month + "月是冬季");
}
}
}
6、switch
switch条件语句也是一种很常用的选择语句,它和if体哦阿健语句不同,它只能针对某个表达式的值做出判断,从而决定程序执行哪一段代码
switch可以包含一个default分支,所有的case语句都不满足条件时,则执行default语句
(遇上合适的case即执行对应case语句,都没遇上则执行default)
语法
switch(){
case 目标值1;
执行语句1
break;
case 目标值1;
执行语句1
break;
case 目标值1;
执行语句1
break;
default:
执行语句n+1
break;
}
注意:因为JDK版本,switch表达式语句中的表达式类型的值。基本上为byte、short、char、int类型的值。
示例:
package Java基础.day02;
public class Switchdome01 {
public static void main(String[] args) {
int week = 1;
switch (week){
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;
}
}
}
1)switch穿透
示例:
package Java基础.day02;
public class Switchdome02 {
public static void main(String[] args) {
int month = 1;
switch(month){
case 3:
case 4:
case 5:
System.out.println(month + "月是春季");
break;
case 6:
case 7:
case 8:
System.out.println(month + "月是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(month + "月是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(month + "月是冬季");
break;
default:
System.out.println("没有对应的季节");
break;
}
}
}
二、随机数类Random
随机数类,用来产生多种数据类型的随机数(整数与小数等),它也属于引用数据类型
创建实例(对象)格式
Random 变量名 = new Random();
1、实例:
package Java基础.day02;
import java.util.Random;
public class Rondomdome01 {
public static void main(String[] args) {
// 创建Random类的实例
Random r = new Random();
// 得到0-100范围内的随机整数,将产生的随机整数赋值给i变量
int i = r.nextInt(100) + 1;
double d = r.nextDouble();
// 输出
System.out.println(i);
System.out.println(d);
}
}
练习1:猜大小游戏
要求
程序预先生成一个1-100之间的随机数,用户键盘录入猜数字
如果猜对了,打印"对了"
如果猜错了:
猜大了:打印"大了"
猜小了:打印"小了"
package Java基础.day02;
import java.util.Random;
import java.util.Scanner;
public class Randomdome02 {
public static void main(String[] args) {
System.out.println("请输入大小");
Random random = new Random();
int randomNumber = random.nextInt(100) + 1;
Scanner sc = new Scanner(System.in);
while (true){
int number = sc.nextInt();
if (number > randomNumber){
System.out.println("大了");
}else if (number < randomNumber){
System.out.println("小了");
}else{
System.out.println("猜对了");
break;
}
}
}
}
(随机数是谁我就不猜了哈)
三、循环语句while、do...while
1、while
while语句会反复的进行条件判断,只要条件成立会一直执行{}的代码,直到条件不成立。
1)语法
while(循环条件){
执行语句
......
}
其中{}中的语句被称为是循环体,循环体是否被执行取决于循环条件
2)执行流程
3)示例
package Java基础.day02;
public class whileDemo01 {
public static void main(String[] args) {
// 定义变量a,初始值为1
int a = 1;
// 循环
while (a <= 4){
// 条件成立,打印x值
System.out.println("a = " + a);
// a进行自增
a++;
}
System.out.println("执行结束!");
}
}
运行结果
2、do...while
while循环是先判断再执行,do...while循环是无条件执行一次,然后再根据循环条件来决定是否继续执行。
语法:
do{
执行语句
......
}while(循环条件);
执行流程图
示例1:打印自然数
package Java基础.day02;
public class dowhileDemo01 {
public static void main(String[] args) {
// 定义变量x,初始值为1
int x = 1;
do {
// 打印x的值
System.out.println("x = " + 1);
// 将x的值自增
x++;
// 循环条件
}while (x <= 4);
}
}
示例2:实现猜大小
package Java基础.day02;
import java.util.Random;
import java.util.Scanner;
public class DowhileiDemo02 {
public static void main(String[] args) {
Random random = new Random();
int number = random.nextInt(100) + 1;
System.out.println("随机数的值:" + number);
Scanner sc = new Scanner(System.in);
// 扩大i的作用域
int i;
do {
System.out.println("请输入");
i = sc.nextInt();
if (i > number){
System.out.println("大了");
}else if (i < number){
System.out.println("小了");
}
}while (i != number);
// 跳出循环,表示猜对了
System.out.println("猜对了");
}
}
3、for循环
一般用于循环次数已知的情况下
1)语法格式:
for(初始化表达式;循环条件;操作表达式){
执行语句
......
}
2)执行流程:
for(【1】 ; 【2】 ; 【3】){
【4】
}
第一步,执行【1】
第二步,执行【2】,如果判断结果为true,执行第【4】步,如果判断结果为false,退出循环
第三步,执行【4】
第四步,执行【3】,然后重复执行第二步
3)示例
打印1-4的和
package Java基础.day02;
public class ForDemo01 {
public static void main(String[] args) {
// 定义变量sum,用来记住累加的和
int sum = 0;
// i的作用域
int i;
// i的取值范围1-4之间
for (i = 1; i <= 4; i++){
// 实现sum与i的累加
sum += i;
}
// 打印累加的和
System.out.println("sum = " + sum);
}
}
4)for循环的其他写法
写法1
for(int i = 1; i<=10; i++){
System.out.println("第一种写法:"+i);
}
System.out.println("-------------------------");
写法2
int i;
for(i = 1; i<=10; i++){
System.out.println("第二种写法: "+ i);
}
System.out.println("-------------------------");
写法三:将i定义到外面
int j = 1;
for( ; j<=10; j++){
System.out.println("第三种写法: "+ j);
}
4、循环嵌套
嵌套循环是指在一个循环语句的循环体中再定义一个循环语句的语法结构
while、do...while、for 循环语句都可以进行嵌套,并且它们之间也可以相互嵌套
常见的for循环嵌套格式如下:
for(初始化表达式; 循环条件; 操作表达式) {
...
for(初始化表达式; 循环条件; 操作表达式) {
执行语句
...
}
...
}
示例1:打印矩形
(注意内层的不是println,以及行数和列数)
public class ForDemo03 {
public static void main(String[] args) {
// 外循环决定的行数
for (int i = 0; i <= 3; i++){
// 内循环决定列数
for (int j = 0; j <= 3; j++){
System.out.print("*");
}
System.out.println("*");
}
}
}
示例2:打印直角三角形
package Java基础.day02;
public class ForDemo06 {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) { // 外循环决定行数
for (int j = 0; j < i; j++) { // 内循环决定列数
System.out.print("*");
}
System.out.println(); // 将光标换到下一行的行首
}
}
}
示例3:打印数字
public class ForDemo07 {
public static void main(String[] args){
for(int i=1; i<10; i++){
for(int j=1; j<=i; j++){
System.out.print(j + " ");
}
System.out.println();
}
}
}
示例4:九九乘法表
package Java基础.day02;
public class ForDemo08 {
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();
}
}
}
示例5:打印空心矩形
package Java基础.day02;
public class ForDemo09 {
public static void main(String[] args) {
// 行数
for (int i = 0; i < 5; i++) {
// 列数
for (int j = 0; j < 5; j++) {
// 空心的部分
if (i == 0 || i == 4 || j == 0 || j == 4) {
System.out.print("*");
// 如果不是四边,那么打印空格
} else {
System.out.print(" ");
}
}
System.out.println(" ");
}
}
}
// 方法2
public static void main(String[] args) {
int weight = 10;
int height = 10;
for (int i = 0; i < height; i++) {
for (int y = 0; y < weight; y++) {
// 确定上下左右四边
if (i == 0 || y == 0 || y == weight - 1 || i == height - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println("");
}
}
实现效果
示例6:打印菱形
package Java基础.day02;
import java.nio.channels.ClosedByInterruptException;
/**
* 打印菱形
*9行5列
* 菱形可以由两个三角形组成,一个正立的三角形和一个倒立的三角形组成,以及四个角四个直角三角形(空白)
*
*/
public class ForDemo10 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
//使用空格将*对齐成菱形
for (int j = 0; j < 10 - i; j++) {
System.out.print(" ");
// System.out.print("-"); 可以使用 - 符号来明显显示。
}
for (int j = i; j > 0; j--) {
System.out.print("* ");
}
System.out.println(" ");
}
// 打印倒三角形
for (int i = 0; i < 10; i++){
// 空格大小,也就是列j 0 < 1(i) ,J自增变成1,输出为1个空格。依次类推
// -
// --
// ---
// ----
for (int j = 0; j < i; j++) {
System.out.print(" ");
// System.out.print("-"); 可以使用 - 符号来明显显示。
}
for (int j = 0; j < 10 - i; j++){
System.out.print("* ");
}
System.out.println(" ");
}
}
}
实现效果和理解图
四、break、continue(跳转语句)
1、break语句
使用switch语句时,作用时终止某个case并跳出循环,一般只能推出一重循环。
当他出现在循环语句中,跳出循环语句,执行后面的代码(一般情况下是两重循环即可,>2,复杂度增加)
示例1:
当变量x的值为3时,使用break语句跳出循环
package Java基础.day02;
public class Breakdemo01 {
public static void main(String[] args) {
// 定义变量x,初始值为1
int x = 1;
// 开始循环
while (x <= 4){
// 如果条件成立,打印x值
System.out.println("x = " + x);
if (x == 3){
break;
}
// x小于4,自增,循环继续
x++;
}
}
}
运行情况
分析:当x<4时,while-prinln-判断x是否=3,是直接跳出整个循环,break。否继续循环直到x=3.
示例2
控制程序只打印4行 ”*“(不推荐使用该方法)
2、continue语句
作用域循环语句,终止本次循环,执行下一次循环
package Java基础.day02;
public class Demo_continue {
public static void main(String[] args) {
// 不使用continue的方法
初始化
// int sum = 0;
循环
// for (int i = 0; i < 100; i++) {
判断奇偶(取模)
// if (i % 2 !=0){
// sum += i;
// }
// }
// System.out.println(sum);
// 使用continue
int sum = 0;
for (int i = 0; i < 100 ; i++) {
if (i % 2 == 0){
// 停止当前循环,继续下一次循环
continue;
}
sum += i;
}
System.out.println(sum);
}
}