141-160break/continue/数组/数组三种创建方式

一、break语句课堂练习

1、BreakExercise.java
1-100以内的数字求和,求出当和第一次大于20的当前数,使用for和break完成。
可以直接打印输出这个数,也可以将i定义在循环外面,然后循环结束后使用这个i,或者单独定义一个变量,当条件满足的时候将i的值赋值给这个变量,使得后面可以使用。
int sum = 0;
int n = 0;
for (int i = 1; i <= 100; i++) {
	sum += i;
	if (sum > 20) {
		System.out.println("和>20时当前数i = " + i);
		n = i;
		break;
	}
}
System.out.println("当前数 = " + n);
2、实现登录验证,有三次机会如果用户名为“丁真”,密码为“666”提示登录成功,否则提示还有几次机会,请使用for加上break来完成。
第二题需要注意字符串的比较需要使用equals方法,这个方法比较的是字符串的内容是否相等。
例如:
String name = "林黛玉";
System.out.println(name.equals("林黛玉"));
System.out.println("林黛玉".equals(name));
推荐第二种写法将具体的字符串放到前面,这样可以避免空指针
示例代码:
import java.util.Scanner;
public class BreakExercise {
    public static void main(String[] args) {
        // 第一题
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (sum > 20) {
                System.out.println("sum = " + sum);
                System.out.println("当前数:" + i);
                break;
            }
            sum += i;
        }

        Scanner scanner = new Scanner(System.in);
        // 第二题
        int chance = 3;
        String name = " ";
        String psw = " ";
        for (int i = 1; i <= chance; i++) {
            System.out.print("请输入用户名:");
            name = scanner.next();
            System.out.print("请输入密码:");
            psw = scanner.next();
            System.out.println(name);
            System.out.println(psw);
            if (name.equals("丁真") && psw.equals("666")) {
                System.out.println("登录成功!");
                break;
            } else {
                System.out.println("还有" + (chance - i) + "次机会!");
            }
        }
    }
}

二、跳转控制语句-continue

基本介绍:
1、continue语句用于结束本次循环,继续执行下一次循环。
2、continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环,这个和前面的标签的使用的规则是一样的。
示例代码:
int i = 1;
while (i <= 4) {
i++;
if (i == 2) {
continue;
}
System.out.println("i = " + i);
}
continue和break一样也可以指定标签:
label1:
for (int j = 0; j < 4; j++) {
label2:
for (int i = 0; i< 10; i++) {
if(i == 2) {
// continue
// continue label2;
// continue label1;
}
System.out.println("i = " + i);
}
}

跳转控制语句return
介绍:return使用在方法,表示跳出所在的方法,在讲解方法的时候会详细的介绍,这里我们简单的提一下。注意:如果return写在main方法中会退出程序。
for (int i = 1; i <= 5; i++) {
if (i == 3) {
System.out.println("ok" + i);
return; // continue; break;
}
System.out.println("Hello World!");
}
System.out.println("go on..");

三、本章作业

老师的代码
1、
double money = 100000;
int count = 0;
while(true) {
	if(money > 50000) {
		money *= 0.95;
		count++;
	} else if (money >= 1000) {
		money -= 1000;
		count++;
	} else {
		break;
	}
}
System.out.println(money + "可以过" + count + "路口..");
我的代码:
public class T01 {
    public static void main(String[] args) {
        /*
         * 1、编程实现如下功能:
         * 某个人有100,000元,每次经过一次路口,需要缴费,
         * 规则如下:
         *  1)当现金>50000时,每次交5%
         *  2)当现金<=50000时,每次交1000
         *编程计算该人可以经过多少次路口,要求:使用while break方式完成
         **/
        double yuan = 100000.0;
        int count = 0;  // 统计可以经过多少次路口
        while (true) {  // 到底可以经过多少次路口不知道使用true
            if (yuan >= 1000) {  // 最低要能够缴纳1000块
                count++;
                if (yuan > 50000) {
                    yuan -= yuan * 0.05;
                } else {
                    yuan -= 1000;
                }
            } else {
                System.out.println("该人已经没有钱了!");
                break;
            }
        }
        System.out.println("该人可以经过" + count + "次路口!");
    }
}
第二题
import java.util.Scanner;
public class T02 {
    public static void main(String[] args) {
        // 2、实现判断一个整数,属于哪个范围:大于0;小于0;等于0
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int n = scanner.nextInt();
        if (n > 0) {
            System.out.println("大于0!");
        } else if (n < 0) {
            System.out.println("小于0!");
        } else {
            System.out.println("等于0!");
        }
    }
}
第三题
import java.util.Scanner;
public class T03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 3、判断一个年份是否是闰年
        System.out.print("请输入一个年份:");
        int year = scanner.nextInt();
        //  普通闰年(能被4整除但不能被100整除)世纪闰年(能被400整除)
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            System.out.println(year + "是闰年!");
        } else {
            System.out.println(year + "不是闰年!");
        }
    }
}
第四题
int n = 153;
int n1 = n / 100;
int n2 = n % 100 / 10;
int n3 = n % 10;
if (n1*n1*n1 + n2*n2*n2 + n3*n3*n3 == n) {
	System.out.println(n + "是水仙花数");
} else {
	System.out.println(n + "不是水仙花树");
}
我的代码:
import java.util.Scanner;
public class T04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 4、判断一个整数是否是水仙花数,所谓
        // 水仙花数是指一个三位数,其各个位上数字立方
        // 和等于其本身。例如:153 = 1*1*1 + 3*3*3 + 5*5*5
        System.out.print("请输入一个整数:");
        int n = scanner.nextInt();
        int ge = n % 10;
        int shi = n / 10 % 10;
        int bai = n / 100;
        if (bai*bai*bai + shi*shi*shi + ge*ge*ge == n) {
            System.out.println(n + "是水仙花数!");
        } else {
            System.out.println(n + "不是水仙花数!");
        }
    }
}
第五题
public class T05 {
    public static void main(String[] args) {
        int m = 0,n = 3;
        if (m > 0) {  // false
            if (n > 2) {
                System.out.println("OK1");
            } else {
                System.out.println("OK2");
            }
        }  // 什么都不会输出!
    }
}
第六题
int count = 0;
for (int i = 1; i <= 100; i++) {
	if (i % 5 != 0) {
		count++;
		System.out.print(i + "\t");
		if (count % 5 == 0) {
			System.out.println();
		}
	}
}
我的代码:
public class T06 {
    public static void main(String[] args) {
        // 6、输出1-100之间的不能被5整除的数,每5个一行
        int count = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 5 != 0) {
                count++;
                System.out.print("i=" + i + '\t');
            }
            if (count == 5) {
                System.out.println();
                count = 0;
            }
        }
    }
}
第七题
for (char c1 = 'a'; c1 <= 'z'; c1++) {
	System.out.print(c1 + " ");
}
for (char c1 = 'Z'; c1 >= 'A'; c1--) {
	System.out.print(c1 + " ");
}
我的代码:
public class T07 {
    public static void main(String[] args) {
        // 7、输出小写的a-z以及大写的Z-A
        for (int i = 97; i <= 122; i++) {
            System.out.print((char)i);
        }
        System.out.println();
        for (int i = 90; i >= 65; i--) {
            System.out.print((char)i);
        }
    }
}
第八题
double sum = 0;
for (int i = 1; i <= 100; i++) {
	if (i % 2 != 0) {
		sum += 1.0/i;
	} else {
		sum -= 1.0/i;
	}
}
System.out.println("sum = " + sum);
我的代码:
public class T08 {
    public static void main(String[] args) {
        // 8、1/1 - 1/2 + 1/3 - 1/4 ... 1/100的和
        // + -> - 奇数+ 偶数-
        // 子 1
        // 母1,100
        double sum = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0) {
                sum += 1.0 / (-1 * i);
            } else {
                sum += 1.0 / i;
            }
        }
        System.out.println("sum = " + sum);
    }
}
第九题
int sum = 0;
for (int i = 1; i <= 100; i++) {
	for (int j = 1; j <= i; j++) {
		sum += j;
	}
}
System.out.println("sum = " + sum);
我的代码:
public class T09 {
    public static void main(String[] args) {
        // 9、求1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + ... + 100)
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            for (int j = 1; j <= i; j++) {
                sum += j;
            }
        }
        System.out.println("sum = " + sum);
    }
}

四、数组

在讲解一个新的知识点的时候要清楚为什么需要这个知识点
为什么需要数组呢?
一个养鸡场中有6只鸡,它们的体重分别是3kg,5kg,1kg,3.4kg,2kg,50kg。请问这六只鸡的总体重是多少?平均体重是多少?请你编写一个程序。Array01.java
使用之前的方法,我们会定义6个变量,然后赋值这些体重,然后对这六个鸡的体重进行求和和求解平均体重。
但是如果要求更多鸡的总的重量和平均重量呢?
定义无数个变量吗?并且这些变量还是相同的数据类型。为此我们引出数组的概念。

数组的介绍:
数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用数据类型。即:数组就是一组数据。
简单来理解就是:
数组就是一组同一类型的数据。
比如:
1、double[] 表示的是double类型的数组,数组名字为hens
2、{3, 5, 1, 3.4, 2, 50}表示数组的值/元素,依次表示数组的第几个元素
double[] hens = {3, 5, 1, 3.4, 2, 50};
遍历数组得到数组中所有的元素的和,推荐使用for
我们可以通过hens[下标]方式来访问数组的元素,下标是从零开始编号的,比如第一个元素就是hens[0],第二个元素就是hens[1],以此类推。
double totalWeight = 0;
for (int i = 0; i < 6; i++) {
// System.out.println("第" + (i + 1) "个元素的值 = " + hens[i]);
totalWeight += hens[i];
}
System.out.println("总体重= " + totalWeight + "平均体重 = " + (totalWeiht / 6));
还可以通过数组名.length得到数组的长度

五、数组的三种创建方式

1、注意数组的[]可以写道数组名的后面,即数组名[]或者写道数据类型的后面,即数据类型[]
第一种使用方式是动态初始化的方式
数组的定义
数据类型 数据名[] = new 数据类型[大小];
int a[] = new int[5]; // 创建一个数组,名字叫做a,存放5个int
说明:这是定义数组的一种方式
初识会在内存中a->|0|0|0|,内存空间是连续的
由于每个小的空间都是一样大的,所以可以通过下标非常方便的访问到指定的元素
练习:循环输入5个成绩,保存到double数组中,并输出

Array02.java
import java.util.Scanner;
public class Array02 {
    public static void main(String[] args) {
        double[] scores = new double[5];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < scores.length; i++) {
            System.out.print("请输入第" + (i+1) + "个成绩:");
            scores[i] = scanner.nextDouble();
        }
        for (int i = 0; i < scores.length; i++) {
            System.out.println("第" + (i+1) + "个成绩:" + scores[i]);
        }
    }
}

数组的动态初始化的第二种使用方法
首先声明数组
语法:数据类型 数组名[];
int a[];
然后创建数组
使用数组名 = new 数据类型[大小];
a = new int[10];
只是声明一个数组,这个可以理解为在内存中,只有一个变量名没有指向任何的空间,没有给这个数组分配空间。new的时候才会分配空间。

3、数组的第三种方式是静态初始化
静态初始化数组
语法:数据类型 数组名[] = {元素值, 元素值...};
int a[] = {2, 5, 6},如果想要知道数组有多少元素,上面的用法相当于int a[] = new int[3];
如果确定了元素值可以使用静态的方式,如果不确定元素值可以使用动态的方式。

数组在使用的时候的注意事项和细节:
1、数组是多个相同类型数据的组合,实现对这些数据的统一管理
int [] arr1 = {1, 2, 3, 60, 1.1};
这样是不行的,相当于之前讲的将double赋给int
但是下面这样是可以的
double[] arr2 = {1.1, 2.2, 3.3, 60.6, 100};
相当于将int赋给double
2、数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型,但是不能混合使用
String是引用数据类型,也是可以的
String[] arr3 = {"北京", "jack", "milan"};
3、数组创建之后,如果没有赋值,有默认值
int是0
short是0
byte是0
long是0
float是0.0
double是0.0
char是\u0000
boolean是false
String是null
4、使用数组的步骤是
	声明数组并开辟空间
	给数组各个元素赋值
	使用数组
5、数组的下标是从0开始的
6、数组下标必须在指定范围内使用,否则报:下标越界异常
7、数组属引用类型,数组类型数据是对象object

image
image

posted @ 2025-05-01 23:09  请叫我虾  阅读(24)  评论(0)    收藏  举报