Java编程基础


选择结构语句

1.if语句

if语句也称为条件语句,也就是说它需要对一些条件进行判断,从而决定执行哪一段语 句。

(1)单分支if语句

单分支 if语句就是对某种条件进行判断,通常表现为: “如果满足某一条件,就执行相 应的语句,不满足条件则不执行”。

 

if(表达式){
    语句序列
}

 

(2)双分支if…else语句

if…else语句是条件语句的一种最通用形式,通常表现为: “如果满足某一条件,就执行 相应的语句,不满足条件则执行另一条语句”。

if(表达式){
    语句序列 1
}else{
    语句序列 2
}

(3)多分支if…else if…else语句

if…else if…else语句用于对多个条件进行判断,进而进行多种不同的处理,通常表现 为: “如果满足某一条件,就执行相应的语句,否则满足另一条件才执行另一种处理,如果 前面的条件都不满足,则执行 else后面的语句”。

if(表达式 1){
    语句序列1
}else if(表达式 2){
    语句序列2
}
......
}else if(表达式 n){
    语句序列n
}else{
    语句序列n+1
}

2.switch多分支语句

switch语句是多分支的开关语句,和if语句不同它只能根据表达式的值来确定执行哪 一条语句。 

switch(表达式){
    case常量表达式1:语句序列1
        [break;]
    case常量表达式2:语句序列2
        [break;]
........
    case常量表达式n:语句序列n
        [break;]
    default:语句序列n+1
        [break;]
}

其中,表达式的值必须是整数型或字符型,switch 语句将表达式的值与 case中的常量值 进行匹配,如果匹配则执行其后面的语句,如果不匹配则不执行其后面的语句,如果所有case 后的常量值都不匹配,则执行default后面的语句,break语句用于跳转语句,一旦执 行,则不再判断后续的case, 直接跳出switch 结构。

循环结构语句

1.while语句

while 循环语句是根据条件来判断是否反复执行某段代码。

 

while(表达式){
    语句序列
}

 

其中的表达式就是需要进行判断的条件,它的 值必须是布尔值,即true 或false。 如果表达式的值 为真,则执行语句序列,语句序列执行完毕后,程 序会接着继续判断表达式的值是否为true如果为true 则继续执行语句序列,直到表达式的结果为false, 则结束while 循环。

2.do…while语句

do…while循环语句与while 循环语句的区别在于: do…while 循环语句是先无条件地执 行一次语句,再根据条件来判断是否反复执行刚才已经执行过一次的语句。

do{
    语句序列
}while表达式);

其中的表达式就是需要进行判断的条件,它的值必须是布尔值, 即true 或false,如果表 达式的值为真, 则执行语句序列,语句序列执行完毕后,程序会接着继续判断表达式的值是 否为 true, 如果为true 则继续执行语句序列,直到表达式的结果为false ,则结束do…while 循环。

3.for循环语句

for 循环语句是最常用的循环语句,一般用在循环次数已知的情况下。

for(①初始化表达式;②循环条件;③操作表达式){
    ④语句序列
}

①初始化表达式: 初始化循环体变量。

②循环条件: 用于判断是否继续执行循环体,其值只能是布尔型。

③操作表达式: 用于改变循环条件的语句。

④语句序列: 该语句也叫作循环体语句,当循环条件为 true时,反复执行。

for循环语句的执行过程如下:

第一步,执行①初始化表达式。

第二步,执行②循环条件,当其结果为true时,执行第三步,当结果为false 时,执行 第五步。

第三步,执行④语句序列。

第四步,执行③操作表达式,然后重复执行第二步。

第五步,退出循环。

循环的嵌套

循环的嵌套就是在一个循环语句的循环体中再包含其他循环结构,在 while、do…while、for语句中都可以进行嵌套,并且它们之间也可以互相嵌套,虽然循环嵌套较为复杂,但是 在实际程序开发中,最常用的就是for循环的嵌套。

for(;;){
    for(;;){
        语句序列
    }
}

跳转语句

跳转语句用于实现程序流程的跳转,Java语言支持break跳转语句和continue跳转语句。

1.break跳转语句

break跳转语句用在switch条件语句和循环语句中,当它出现在switch 条件语句中时,它的作用是终止某个case 并跳出整个switch结构,当它出现在循环语句中时,它的作用是 跳出整个循环结构,终止循环。

public class Example12{
    public static void main(String[] args){
        int x=1;
        while(x<=5){
            System.out.println("x="+x);
            if(x==3){
                break;     //当 x的值为3时,循环结束
            }
            x++;
        }
    }
}

2.continue跳转语句

 

pubic class Example13 {
    pubic static void main(String[] args) {
        int sum=0;     //定义变量 sum,用于存储累加和的结果
        for(int i=1;i<=50;i++) {
            if(i%2!=0) {     //如果 i是一个奇数,不累加
                continue;     //结束本次循环
            }
            sum+=i;    // 实现sum和i的累加
        }
        System.out.println("sum="+sum);
    }
}

 

什么是数组

1.数组的定义

数组是指一组数据的集合,数组中的每个数据被称为元素,通过数组可以保存一组相同 数据类型的数据,数组的类型可以是基本数据类型,也可以是引用数据类型(暂不讨论)。可 以是一维数组,也可以是多维数组。

(1)声明数组

 

数组类型[] 数组标识符;
数组类型 数组标识符[];

 

例如,声明一个int 型一维数组变量x, 具体代码如下:

int[ ] x;
int x[ ];

(2)创建数组

int[ ] x;     //声明一个int[ ]类型的变量
x=new int[10];     // 创建一个长度为10的数组,并将数组的地址赋给 x

同时,也可以将数组的声明和创建用一行代码代替:

int[ ] x=new int[10];

上述语句就相当于在内存中定义了 10 个整型变量, 第 1 个变量的名称为 x[0]、 第 2 个 变量的名称为 x[1]……第 10 个变量的名称为 x[9], 此时,这些变量的初始值由系统自动 提供,都是 0。

(3)初始化数组

数组的初始化分为动态初始化和静态初始化,在定义数组时,只声明创建数组, 数组中 的元素值由系统提供初值的方式称为动态初始化,而在定义数组的同时为数组的每个元素赋 值的方式叫作静态初始化。

 

数组类型[] 数组标识符=new 类型[ ]{元素,元素,......};
数组类型[] 数组标识符= {元素,元素,......};

 

数组的常见操作

1.遍历数组

所谓数组的遍历就是指依次访问数组中的每个元素。一般使用for循环来遍历数组。

 

public class Example15{
    public statics void  main(String[] args){
        int[] x={2,4,6,8,10};     // 定义数组
        //for使用循环遍历数组的元素
        for(int i=0;i<x.length;i++) {
            System.out.println(x[i]);     // 通过索引访问元素
        }
    }
}

 

2.最值获取

在操作数组时,经常会遇到获取数组中的最值,接下来通过一个案例来演示如何获取数 组中元素的最大值及最小值。

 

public class Example16{
    public static void main (String[] args){
        int[]x = {8,16,3,32,99,28};      //定义一个数组
        int max = x[0];     //定义变量max用于记住最大数,假设第一个元素为最大值 
        int min= x[0];      //定义变量min用于记住最小数,假设第一个元素为最小值 //下面通过一个for循环遍历数组中的元素
        for (int i = 1; i < x. length; i++){
            if (x[i] > max){    //比较x[i]的值是否大于max 
                max = x[i];     //条件成立,将x[i]的值赋给max
            }
        }
        //下面再次通过一个for循环遍历数组中的元素
        for (int i = 1; i < x. length; i++){
            if (x[i] < min){    //比较x[i]的值是否小于min 
                min = x[i];     //条件成立,将x[i]的值赋给min
            }
        }
        System. out. println(" max=" + max);     // 打印最大值 System. 
        out. println (" min=" + min);     // 打印最小值
    }
}

 

3.数组排序

在操作数组时,还经常需要对数组中的元素进行排序,而对数组进行排序的方法很多,以下介绍一种比较常见的排序方法———冒泡排序法。冒泡排序的原理如下:

第一步: 从第一个元素开始,依次将相邻的两个元素进行比较,将较大值(或较小值) 存放到后一个元素中,整个过程完成后,数组中的最后一个元素就是最大值(或最小值)。

第二步: 除了最后一个元素外,将剩余的元素继续进行两两比较,过程同第一步,这样 就可以保证数组中倒数第二个元素是最大值(或最小值)。

第三步: 以此类推, 继续对越来越少的元素重复上面的步骤,直到没有任何一对元素需 要比较为止。

按照上述原理, 通过一个案例来实现冒泡法对数组的排序。

public class Example17{
    public static void main (String[ ] args) {
        int[ ] x = { 8, 16, 3, 32, 99, 28 } ;
        System. out. print("冒泡排序前: /n");
        for (int i = 0; i< x.length; i++) {
            System. out. print(x[i]+"/t");     //通过索引访问元素
        }
         //通过for循环的嵌套来实现冒泡排序
        //定义外层循环
        for (int i = 0; i < x.length - 1; i++){
            //定义内层循环
            for (int j = 0; j < x. length - i - 1; j++){
                if (x[j] > x[j + 1]){     //比较相邻元素 
                    //下面的三行代码用于交换两个元素
                    int temp = x[j];
                    x[j] = x[j + 1];
                    x[j + 1] = temp;
                }                
            }
        }
        System. out. print(" In I2排序: In" ) ;
        for (int i = 0; i < x. length; i++) |
        System. out. print(x[i]+"/t");     //通过索引访问元素
        }
    }
}

程序运行结果

Java编程基础

 

 

 二维数组的使用

二维数组的定义方式有多种,第一种方式:

 

int[ ][ ] a=new int[2][3];

 

第二种方式:

int[ ][ ] a = {{1,2},{3,4,5}};

实现学生成绩管理系统

1.任务描述

录入班级学生的各科成绩,计算每名学生的总分、平均分,并按总分降序排序。

2. 任务目标

(1)学会分析“学生成绩管理系统”子任务实现的逻辑思路。

(2)能够独立完成“学生成绩管理系统”程序的源代码编写、 编译及运行。

(3)能够在程序中使用循环进行相关操作ꎮ。

(4)掌握数组的使用。

3. 实现思路

(1)需定义存储学生姓名的数组、 存储课程名称的数组、 各科成绩的二维数组、 存储总 分的数组、 存储平均分的数组、 存储学生信息的数组。(拼接学生姓名、 各科成绩、 总分、 平均分)

(2)键盘输入学生的信息,将输入的值赋值给数组各个元素,需要使用Scanner 类,以 下代码能够从键盘输入中读取相关数据。

Scanner sc=new Scanner(System.in);

某变量=sc.nextInt();     // 该变量可以接受键盘输入的整型数据

某变量=sc.next();     //该变量可以接收键盘输入的字符串类型的数据

(3)对学生信息排序(根据总分排序)。

(4)循环打印排序后的学生信息。

4.实现代码

import java. util. Scanner;
public class Student{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System. out. println("输入学生人数");
        int stuNum = sc. nextInt();    //接收键盘输入的整型数据
        System. out. println("请输入课程数");
        int couNum=sc. nextInt();    //接收键盘输入的整型数据
        String[] name = new String[stuNum];     //存储学生姓名 
        String[]  course =new String[couNum];     //存储课程名称 
        int[][] score = new int[ stuNum][couNum];     //存储各科成绩 
        int[] sum=new int[ stuNum];     //存储总分
        int[] avg=new int[stuNum];     //存储平均分
        String[] content = new String[ stuNum];     //存储生信息 

        //录入课程名称
        for(int i=0; i<couNum;i++){
            System. out. println("请输入第"+(i+1)+"个课程名称");
            course[i] = sc. next();
        }
        //录入学生各科成绩,同时计算总分、平均分
        for(int i=0; i<stuNum;i++){
            System. out. println("请输入第"+(i+1) +"个学生的名字");
            name[i] =sc. next();    //接收键盘输入的字符串
            content[i] =name[i]+"/t/t";     //拼接姓名
            for(int j=0;j<couNum;j++){
                System. out. println("请输入" +name[i] +course [j]+"的成绩");
                score[i][j] =sc. nextInt();     //接收键盘输入的整型数据 
                sum[i]+=score[i][j];       //计算总分 
                content[i]+=score[i][j]+"/t/t";     //拼接各科成绩
            }    
            avg[i] =sum[i]/stuNum;    //计算平均分 
            content[i]+=sum[i]+" /t/t" +avg[i]+"/t/t";     //拼接总分、平均分
        }
        //根据总分对学生成绩排序
        for(int i=0; i<stuNum-1;i++){     //冒泡排序
            for( int j= 0;j<stuNum-1;j++){
                if(sum[j]<sum[j+1]){    //比较总分 
                    int t=sum[j];     //交换总分
                    sum[j] =sum[j+1];
                    sum[j+1] =t;
                    String temp = content[j];     //交换字符
                    content[j] =content[j+1];
                    content [j+1] = temp;
                }
            }
        }
        //打印学生成绩 
        System. out. print("姓名/t/t");
        for(int i=0; i<couNum; i++){
            System. out. print(course[i]+"/t/t");
        }
        System.out.println("总分/t/t 平均分/t/t 排名/t/t");    //表头
        for(int i=0;i<stuNum;i++){
            System.ou.println(content[i]+"第"+(i+1)+"名/t/t");
        }
    }
}

5.运行结果

Java编程基础

 

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/288539.html

(0)
上一篇 2022年9月10日
下一篇 2022年9月10日

相关推荐

发表回复

登录后才能评论