Java基础知识整理系列第二弹

一、For循环

1、for循环语法

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

​ 方法体

}

注意:

(1)for循环括号后面" ; "不能省略

(2)缺少循环判断条件、更新循环变量,造成死循环

(3)未对参数初始化,造成编译不通过

二、break的用法

break:用于跳出当前循环而执行循环后面的语句

//当i=2的时候跳出循环,break的使用
        int count=2;
        for (int i = 0; i <5 ; i++) {
            if (i==count){
               break;
            }
            System.out.println("------"+i);
        }
运行结果:

在这里插入图片描述
从上面例子可以看出,当i==2时,循环就截止了。i

三、continue的用法

continue:用于跳过当次循环而执行下次循环

//当i=2的时候跳出循环,countinue的使用
int count=2;
for (int i = 0; i <5 ; i++) {
    if (i==count){
        continue;
    }
    System.out.println("------"+i);
}
运行结果:

在这里插入图片描述
从运行结果可以看出,当i==2时,跳过当次打印,而执行下次打印。

四、while循环

1.while循环的语法

while(循环条件){

​ 方法体

}

注意:循环条件是循环继续执行的条件
先判断循环条件,然后再执行方法体
例子:录入班级人数和学员成绩,计算班级学员的平均成绩
//录入班级人数和学员成绩,计算班级学员的平均成绩
    int i = 1;  //学生的起始值
    int num = 0;   //班级的总人数
    double sum = 0;  //总成绩
    double avg=0;//平均成绩
    System.out.println("请输入班级的总人数:");
    Scanner in =new Scanner(System.in);
    num=in.nextInt();
    while (i<=num){
        System.out.println("请输入第"+i+"名同学的成绩:");
        int temp=in.nextInt();
        sum+=temp;
        i++;//更新循环变量
    }
     avg=sum/num;
    System.out.println("班级学员的平均成绩:"+avg);
}
重点:切记要写更新循环变量,不写会造成死循环,程序永远退不出。

五、do—while循环

1.do—while循环的语法

do{

方法体

}while(循环条件);

注意:循环条件括号后面的“;”

先执行方法体,然后再判断循环条件

例子:连续录入学生姓名,输入“q”则系统退出
//连续录入学生姓名,输入“q”则系统退出
Scanner in =new Scanner(System.in);
String name="";
do {
    System.out.println("请输入学生的姓名:");
    name=in.nextLine();
}while (!name.equals("q"));

六、嵌套循环

理解:外循环执行一次,内循环执行一圈。
例子:输出100~200之间所有的素数,控制台每行输出8个素数
素数的概念:素数又称质数,就是在所有比1大的整数中,除了1和它本身以外,不再有别的约数,这种整数叫做质数或素数。还可以说成质数只有1和它本身两个约数。
//输出100~200之间所有的素数,控制台每行输出8个素数
int count=0;//控制在控制台输出的个数
for (int i = 100; i <=200 ; i++) {
    int j = 2;//比1大的整数中,寻找除了1和它本身之外,没有其他的约数
    while (i%j!=0){
        j++;
        if (i==j){
            System.out.print(i+"\t");
            count++;
            if (count%8==0){
                System.out.println();
            }
            break;
        }
    }
}

七、总结循环

1、循环结构的意义

​ 需要多次重复执行一个或多个任务的问题考虑使用循环来解决

2、while、do—while、for的区别
(1)初始条件不满足循环条件

​ while、for循环一次都不会执行

​ do—while循环不管任何情况都至少执行一次

八、数组

1、数组的定义

数组是一个变量,存放相同数据类型(之前说的八种基本数据类型、引用数据类型)的一组数据。
注意:数组下标索引是从“0

2、数组的声明与赋值

//数组的声明(int类型)
int[] a;
//给数组分配空间(int类型)
a = new int[8];
//数组赋值
a[0]=3;
//处理数据
System.out.println(a[0]*10);
(1)数组声明语法:
数据类型 数组名 [] (Java采用这样写的,因此推荐这样写)
数据类型 [] 数组名(c/c++是这样写的)
(2)声明数组并分配空间
数据类型[ ] 数组名 = new 数据类型[大小] ;
(3)声明数据并赋值
//第一种:边声明边赋值
int [] a= new int []{89,79,76};
//第二种:边声明边赋值
int [] a={89,79,76};
//第三种:动态从键盘输入赋值
      Scanner in =new Scanner(System.in);
        //边声明边赋值
       int [] a=new int[10];
        for (int i = 0; i <a.length; i++) {
              a[i]= in.nextInt();
        }

常见错误:

//必须写明数组的大小
int[ ] score = new int[ ];
//数组创建和赋值必须在一行语句中完成
int[ ] score = new int[5];
score = {60, 80, 90, 70, 85}

预备知识:

栈内存:用来存放在函数中定义的一些基本类型的变量和对象的引用变量
堆内存:用来存放由new创建的对象和数组

在这里插入图片描述

三、数组常见的操作

(1)求平均值
//有一个数组:{8,4,2,1,23,34,12,9,15,66}
 double sum=0;
 double avg=0;
 int []a={8,4,2,1,23,34,12,9,15,66};
 for (int i = 0; i <a.length ; i++) {
       sum+=a[i];
 }
 avg=sum/a.length;
 System.out.println("该数组的平均值为:"+avg);
(2)求最大(小)值
//有一个数组:{8,4,2,1,23,34,12,9,15,66}
//寻找数组中的最大值
int[] a = {8, 4, 2, 1, 23, 34, 12, 9, 15, 66};
int max=a[0];
for (int i = 0; i < a.length; i++) {
    if(a[i]>max){
       max=a[i];
   }
}
System.out.println("数组中的最大值为:"+max);
//有一个数组:{8,4,2,1,23,34,12,9,15,66}
//寻找数组中的最小值
int[] a = {8,4,2,1,23,34,12,9,15,66};
int min = a[0];
for (int i = 0; i < a.length; i++) {
    if(a[i]<min){
        min=a[i];
   }
}
System.out.println("数组中的最小值为:"+ min);
(3)根据下标找到数组中的值
//有一个数组:{8,4,2,1,23,34,12,9,15,66}
//根据下标找到数组中的值
Scanner in =new Scanner(System.in);
int []a={8,4,2,1,23,34,12,9,15,66};
int temp=0;
System.out.println("请输入你要查找的下标:");
int index=in.nextInt();
if (index>=0&&index<a.length){
    for (int i = 0; i <a.length ; i++) {
        if (index==i){
           temp=a[i];
        }
    }
    System.out.println("你要查找的值为:"+temp);
}else {
    System.out.println("你输入的下标不在数组中");
}
(4)根据值找到数组中的下标
//有一个数组:{8,4,2,1,23,34,12,9,15,66}
//根据下标找到数组中的值
Scanner in =new Scanner(System.in);
int []a={8,4,2,1,23,34,12,9,15,66};
int temp=-1;
System.out.println("请输入你要查找的值:");
int index=in.nextInt();
for (int i = 0; i <a.length ; i++) {
    if (index==a[i]){
        temp=i;
    }
}
if (temp==-1){
    System.out.println("你输入的值不在数组中");
}else {
    System.out.println("你输入的值在数组中的下标为:"+temp);
}
(5)冒泡排序
//有一个数组:{8,4,2,1,23,34,12,9,15,66}
//冒泡排序
int []a={8,4,2,1,23,34,12,9,15,66};
//外层循环趟数
for (int i = 0; i <a.length-1 ; i++) {
    //内层循环控制对比次数
    for (int j = 0; j <a.length-1-i ; j++) {
             //从小到大(改变排序顺序,就改变if条件)
             if (a[j]>a[j+1]){
                 int temp=a[j];
                 a[j]=a[j+1];
                 a[j+1]=temp;
             }
    }
}
System.out.println(Arrays.toString(a));
(6)二分查找
public static int digui(int[] arr, int left, int right, int key) {
    if (left <= right) {
        int mid = (left + right) / 2;
         //在中间
        if (arr[mid] == key) {
            return mid;
        }
        //在右边
        else if (arr[mid] < key) {
            left = mid + 1;
            return digui(arr, left, right, key);
        }
        //在左边
        else {
            right = mid - 1;
            return digui(arr, left, right, key);
        }
    }
    return -1;
}
public static void main(String[] args) {
    //有一个数组:{8,4,2,1,23,34,12,9,15,66}
    //二分查找法,前提条件是数组必须有序
    Scanner in = new Scanner(System.in);
    int[] a = {8, 4, 2, 1, 23, 34, 12, 9, 15, 66};
    //对数组进行排序
    Arrays.sort(a);
    //二分查找
    System.out.println("请输入你要查找的数字:");
    int s = in.nextInt();
    //传入函数查找数字,返回数组下标
    int index=digui(a, 0, a.length - 1, s);
    if (index == -1) {
        System.out.println("你要找的数字不在数组中!");
    } else {
        System.out.println("你要找的数字的下标为:"+index);
    }

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值