Java中的结构和数组

Java中的结构和数组

选择结构

一、什么是选择结构

选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。

二、选择结构的分类

选择结构分为两类:if选择结构和switch选择结构

三、if选择结构

if选择结构又分为:简单if结构、if…else结构、多重if结构、if嵌套结构;

在if结构里只有if是不可以少的,else不可以单独出现,否则会报错,else和它上面最近的if为一对,注意:要看大括号的位置。

if里面的条件可以是boolean类型的值,也可以是等值判断。

1、简单if结构

简单if结构:可以处理单一或组合条件的情况;

语法:

if(条件){

   //代码块

}

流程图:

在这里插入图片描述

实例:

public class Y1{
    public static void main(Strint[] args){
        int score = 85;
        if( score > 80){    // 如果score大于80就输出 是个人才;如果score不大于80就什么都不输出
        System.out.println("是个人才");
        }
    }
}
//结果是: 是个人才

if的条件必须是boolean类型的值

2、if…else结构

if…else结构:可以处理简单的条件分支情况。

语法:当条件成立时执行代码块1,当条件不成立时执行代码块2;条件必须是boolean类型值

if(条件){

	 //代码块1

}else{

	//代码块2

}

流程图:

在这里插入图片描述

实例:

public class Y2{
    public static void main(String[] args){
        int score = 82, score2 = 90;  //两门功课的成绩
        if(score > 80 && score2 >85){
			System.out.println("好好学习");   //如果score大于80并且score2大于85就输出 好好学习
		}else{
    		System.out.println("天天向上");   //如果score小于80 或 score小于85 就输出 天天向上
		}	
    }
}
//结果是:好好学习
3、多重if结构

多重if结构:可以处理连续区间的条件分支情况。

语法:先判断条件1是否成立,成立执行代码块1,不成立执行else语句并判断条件2是否成立,成立执行代码块2,不成立则不输出

if(条件1){

	//代码块1

}else if(条件2){

		//代码块2

}

流程图

在这里插入图片描述

实例

public class Y3{
    public static void main(String[] agrs){
        if(8 > 9){                      	//判断8是否大于9,大于输出 好好学习,小于就执行else语句
            System.out.println("好好学习");  
        }else if(9 < 10){  				   // 再判断9是否大于10,大于输出 天天向上,小于就什么都不输出
            System.out.println("天天向上");
        }
    }
}
//结果是 : 天天向上
4、if嵌套

if嵌套:可以处理复杂的条件分支情况。

语法:先判断条件1是否成立,成立:判断条件2是否成立,成立执行代码块1;不成立执行代码2;条件1不成立,执行代码块3。

if(条件1){

	if(条件2){

		//代码块1

	}else{

		//代码块2

	}

}else{

	//代码块3

}

流程图:
在这里插入图片描述
实例

public class Y4{
    public static void main(String[] args){
        if(8 > 9){    //判断8是否大于9,大于进入下一个if,小于直接输出 学习爱我
            if(9 < 10){  //判断9是否小于10 小于输出 学习使我快乐,大于输出 我爱学习
                System.out.println("学习使我快乐");
            }else{
                System.out.println("我爱学习");
            }
        }else{
            System.out.println("学习爱我");
        }
    }
}
//结果是:学习爱我

四、switch选择结构

switch结构:当需要多重分支并且条件判断是等值判断的情况下,使用switch选择结构代替多重if选择结构会更简单,代码结构会更清晰易读。在使用switch结构的时候,可以根据情况需求在case语句后面写上break语句,switch仅用于等值判断。

switch语法:判断表达式的值是否与case中的常量相同,相同执行相应的代码块,没有相同的就执行default中的代码块。
语法:

switch(表达式){

	case 常量 1//代码块1;

		break;

	case 常量 2//代码块2;

		break;

	default//代码块n;

		break;

}

实例:

public class Y1{
	public static void main(String[] args){
		int num = 1;
		switch(num){  //判断num的值与case的常量是否相同,相同输出case中的代码,不相同就输出default中的代码
			case 1:
				System.out.println("我爱学习");
                  break;
             case 2:
                System.out.println("学习爱我");
                break;
             default :
                System.out.println("学习使我快乐");
                break;
		}
	}
}

//结果输出 : 我爱学习

在switch结构里,只有switch是不可以少的,case 块、default块和break语句是可以少的,但是少了case块,这个程序就没有任何意义了;在case块里,case后面必须要跟常量和英文状态下的冒号,否则会报错;在default块里,default后面必须要跟英文状态下的冒号,否则会报错。

在switch中,case块和default块的位置是不固定的,但是位置的不同,程序的运行结果也不同。

五、处理系统异常

处理系统异常其实就是防报错,防报错有一个方法,但这个方法要结合Scanner一起使用

Scanner in = new Scanner(System.in);
if(in.hasNextInt() == true){    //判断从控制台输入的值是否是int类型的
	int num = in.nextInt();
	whlie(num != 0){
        System.out.println(num);
    }
}else{
    System.out.println("请输入正确的数字")}

用这个方法可以防止报错,如果输入的类型和定义的类型不一致会进入else语句提示 请输入正确的数字。

循环结构

一、循环结构是什么

循环结构是反复进行相同的或类似的一系列操作;循环不是无休止的进行的,满足一定条件的时候才会继续,条件不满足的时候,循环退出。

二、循环结构的分类

目前常用的循环结构分为三种:while、do…while 、 for;

while循环又称“当型循环”;do…while循环又称为“直道循环”;for循环就叫for循环。

无论是在while循环、do…while循环还是for循环中都要有迭代,如果没有迭代,可能就是个死循环了。

三、while循环

while循环:while循环的特点是:先判断,再执行;如果第一次的判断循环条件是就不成立,则会直接跳出循环,循环操作一次也不执行。while小括号里的循环条件必须是boolean类型

while语法:先判断循环条件是否成立,成立执行循环操作,不成立就不进入循环。

while(循环条件){

	//循环操作

}

流程图:

在这里插入图片描述

实例:

int i = 1;
while(i <= 100){
	System.out.println("好好学习");
	i++;    //迭代
}
//循环输出100次 好好学习

四、do…while循环

do…while循环:do…while循环的特点是:先执行,再判断;会无条件的循环一次。do…while循环结构要以分号结尾,否则会报错

do…while循环语法:先无条件的执行一次,再判断循环条件是否成立,成立就再次进入循环,不成立就不再进入循环。

do{

	//循环操作

}while(循环条件);

流程图

在这里插入图片描述

实例:

int i = 1;
do{
	System.out.println("好好学习");
	i++;  //迭代
}while(i <= 100);
//输出100遍 好好学习

五、for循环

for循环:for循环一般用于次数固定的,

for循环语法:

for(表达式1;表达式2;表达式3){

	//循环操作

}

流程图

在这里插入图片描述

实例

for(int i = 1; i <= 100; i++){
	System.out.println("好好学习");
}
//输出100次 好好学习

在for循环语句中,三个表达式都可以没有,但是两个分号不能少,否则会语法报错;

表达式1:赋值语句,只执行一次,给变量赋初始值

表达式2:条件语句,必须是boolean类型的

表达式3:迭代,通常使用 ++ 或 – 运算符,用来改变变量的值。

for循环的执行顺序是:

1、执行初始部分;

2、进行循环条件的判断;

3、根据判断结果决定是否循环,true:执行循环操作;false:退出循环,不再执行步骤4和步骤5;

4、执行迭代部分,改变变量的值;

5、依次重复上面的步骤,直到退出循环

六、循环嵌套

循环嵌套又称为二重循环,二重循环就是一个循环体内又包含另一个完整的循环结构;while、do…while、for这三种循环是可以相互嵌套的。

while嵌套while、do…while嵌套do…while、for嵌套for、while嵌套for这四种是我们比较常用的,下面就介绍这四种嵌套循环的语法和使用吧

1、while嵌套while

语法:

while(循环条件1){

	//循环操作1

	while(循环条件2){

		//循环操作2

	}

}

实例:

int i = 1;
while(i <= 10){
    System.out.println("清风");
    while(i >= 5){
        System.out.println("杨柳");
        i += 2;
    }
    i++;
}
2、do…while和do…while的嵌套

语法:

do{

	//循环操作1

	do{

		//循环操作2

	}while(循环条件2);

}while(循环条件1)

实例:

int i = 0;
do{
    System.out.println("努力");
    i++;
    do{
        System.out.println("学习");
        i++;
    }while(i > 2);
}while(i > 4);
//结果是:
//努力
//学习
3、for和for的嵌套

语法:

for(循环条件1){

	//循环操作1

	for(循环条件2){

	//循环操作2

	}

}

实例:

for(int i = 0 ;i < 2 ;i++){
	System.out.print("努力");
	for(int j = 0; j < 2; j++){
		System.out.print(j);
	}
    System.out.println();   //换行
}
//结果是:
//努力01
//努力01
4、while嵌套for

语法:

while(循环条件1){

	//循环操作1

	for(循环条件2){

		//循环操作2

	}

}

实例:

int num = 0;
while(num != 2){
	System.out.println("次数:");
	for(int i = 0 ;i < 2;i++){
		System.out.println(i);
	}
    num++;
}
//结果是:
//次数:01
//次数:01

在上面的二重循环中,循环条件1和循环操作1我们称为:外循环;循环条件2和循环操作2我们称为:内循环;在二重循环中有一个规定:外循环执行一次,内循环执行所有;内循环执行结束后才再次执行外循环。

七、break和continue的区别

break和continue的区别是:break是终止一个循环,continue是结束本次循环进入下一次循环;break可以使用在switch和循环中,但continue只能用在循环中。

1、break

break在switch结构中也有提到,break在switch中的作用是:用于终止switch语句中的某个分支,使程序跳到switch结构的下一条语句。

break在循环中发挥的作用是:跳出循环,但是如果是在二重循环中,break在那一层循环里面就结束那一层循环;在break后面的语句就将不执行,循环也会停止不再执行。

break可以用在switch中和循环中。

for(int i = 0;i <= 10; i++){
    System.out.println("努力");
	if(i > 5){   //当i > 5的时候就输出好好学习
        System.out.println("好好学习");
        break;  //遇到break就退出for循环,不再执行循环
    }
}
//结果是:输出5遍努力1遍好好学习
2、continue

continue只能用在循环中;continue在循环中的作用是:结束本次循环,进入下一次的循环。

for(int i = 0; i < 5 ; i++){
	if(i == 3){   //判断i是否等于3
		continue; //当i等于3的时候结束本次循环,跳到for循环中的迭代部分
	}
	System.out.print("努力" + i +" ");
}
//结果是:努力1 努力2 努力4 努力5

continue语句后面不能再有多余的语句,否则会报错。

在循环结构中:

break语句用于终止某个循环,程序跳到循环体外的下一条语句。

continue语句用于跳出本次循环,进入下一次循环的语句。

数组

一、数组是什么

数组是一种引用型数据类型;也是一个变量。

数组的定义:数组是就是一个变量,用于将相同数据类型的数据存储在内存中。数组中每一个数据元素都属于同一数据类型。数组是在内存空间中划出一串连续的空间来存储数据。

二、数组的基本要素和使用数组步骤

1、数组的基本要素

标识符:其实就是数组名;

数组元素:数组中的数据;

数组下标:相当于是一个编号,但是下标是从0开始的;

元素类型:就是数组中的元素的类型,数组中的元素类型必须是同一类型的。

2、数组的使用步骤

使用数组的四个步骤:声明数组、分配空间、赋值、使用;

1、声明数组:

语法:

1、数据类型[] 数组名;

int[] scores;  //定义一个int类型的数组

2、数据类型 数组名[];

int score[];   //定义一个int类型的数组

建议使用第一种定义方式;

2、分配空间

语法:

1、数组名 = new 数据类型[数组长度];

scores = new int[30];  //长度为30的int类型数组

2、数据类型[] 数组名 = new 数据类型[数组长度];

int[] scores = new int[30];  //存储30个int类型的数据
3、赋值

语法:

1、数组名[下标];

scores[0] = 20;
scores[1] = 10;
......
    // 向scores数组中存放数据

2、数据类型[] 数据名 = {值1,值2,值3,… ,值n};

int[] scores = {98,67,80,50,90};  // 创建一个长度为5的数组scores
4、使用

使用下标输出需要的数据,如果要输出最后一个数据要用数组长度-1;否则报数组越界的错误。

int[] scores = {85,43,67,83,79,90};  //创建了一个长度为6的数组scores
for(int i = 0 ;i < 6 ;i++;){
    System.out.println(scores[i] +" ");  //输出scores数组中的数据,用下标输出数组中的值
}
//输出86 43 67 83 79 90

数组名.length; 这是求一个数组的长度;

最后一个数据的输出只能是数组长度-1;

int[] num = {12,34,56,78,90,13,34};  //创建一个数组num
for(int i = 0; i < num.length; i++){  //i的长度到数组的长度停止
	System.out.println(num[num.length-1]);  //输出num数组中的最后一个元素
}

在数组中长度和值不能同时出现,否则会报错;

int[] num =new int[5]{62,52,96,71,85};   //这样的数组是会报错的
//在有即长度又同时赋值的是不可以的

三、数组排序

在数组中要进行排序,在数组中要如何就行升序排序呢,可以用下面的语法;

语法:

Arrays.sort(数组名);

int[] num = new int[]{25,95,89,34,56};
Arrays.sort(num);  //对num数组中的值进行升序排序
for(int i = 0; i < num.length; i++){
	System.out.println(num[i]+" ");  //循环输出num数组里的值
}
//结果是:25 34 56 89 95

Arrays是Java中提供的一个类,而sort()是该类的一个方法。关于类和方法下次再说,目前只要知道按照上面的语法可以将数组中的值变成升序就可以了。

四、求数组最大值

在数组中我们免不了要求最大值,那我们要如何求数组中的最大值呢,其实不难;

//假设我们要求5个同学的成绩中的最大值
int[] scores = new int[]{85,96,62,78,63};   //5位同学的成绩
int max = 0;   //记录最大值
//计算最大值
max = scores[0];  //将数组中的一个值赋给max
for(int i = 1; i < scores.length; i++){  //循环
    if(scores[i] > max){    //判断数组中的值是否大于max
        max = scores[i];  //将大于max的值赋给max,让max的值始终保持为最大
    }
}

注意:无论是在求最大值还是求最小值,都要先把数组中的一个值赋给最大值或最小值定义的变量,才能进行数组中的值的比较;数值类型的数组可以直接比较,但是字符串类型的就不能直接比较了,要用一个方法来进行比较;

字符串的比较:.compareToIgnoreCase()方法

语法:

String1.compareToIgnoreCase(String2);

实例:

if((String[i]).compareToIgnoreCase(String2[i]) > 0){    //两个字符串数组进行比较
    System.out.println(String);
}

这就是字符串的比较方法,可以数组和数组进行比较,也可以数组和字符串比较。

五、向数组中插入元素

数组的长度是固定的,但数组中的值数不固定的(数组中的值可以不固定但是值的数量是固定的),如果我们要如何向数组插入一个元素呢。

int[] scores = new int[]{78,89,89,90,98,0};  //多赋一个值,这个值为0,表示插入一个数
int num = 97;  //要插入的元素
int index = scores.length;  //保存新增加的成绩的插入位置
//找到新元素要插入的位置
for(int i = 0; i < scores.length ; i++){
    if(num > scores[i]){
        index = i;
        break;
    }
}
//元素后移
for(int j = scores.length-1; j > index ; j-- ){
    scores[j] = scores[j-1]; //index下标开始的元素后移一个位置
}
scores[index] = num;  //插入数据

这就是向数组中插入一个数值的方式。

String1.compareToIgnoreCase(String2);

实例:

if((String[i]).compareToIgnoreCase(String2[i]) > 0){    //两个字符串数组进行比较
    System.out.println(String);
}

这就是字符串的比较方法,可以数组和数组进行比较,也可以数组和字符串比较。

五、向数组中插入元素

数组的长度是固定的,但数组中的值数不固定的(数组中的值可以不固定但是值的数量是固定的),如果我们要如何向数组插入一个元素呢。

int[] scores = new int[]{78,89,89,90,98,0};  //多赋一个值,这个值为0,表示插入一个数
int num = 97;  //要插入的元素
int index = scores.length;  //保存新增加的成绩的插入位置
//找到新元素要插入的位置
for(int i = 0; i < scores.length ; i++){
    if(num > scores[i]){
        index = i;
        break;
    }
}
//元素后移
for(int j = scores.length-1; j > index ; j-- ){
    scores[j] = scores[j-1]; //index下标开始的元素后移一个位置
}
scores[index] = num;  //插入数据

这就是向数组中插入一个数值的方式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值