打印图形:
外层循环控制行, 内层循环控制列
1. 先根据行数编写外层循环次数
2. 再根据外层循环的变量(i) , 去分析, 这个变量与内层循环列数的关系 !
(1)
*
* *
* * *
* * * *
* * * * *
for(int i=0;i<5;i++){
for(int j=0;j<=i;j++){
System.out.print("* ");
}
System.out.println();
}
(2)
----*
---***
--*****
-*******
*********
for(int i=0;i<5;i++){
for(int j=4;j>i;j--){
System.out.print(" ");
}
for(int j2=0;j2<=i*2;j2++){
//0*2+1 : 1个*
//1*2+1 : 3个*
//2*2+1 : 5个*
//3*2+1 : 7个*
//4*2+1 : 9个*
System.out.print("*");
}
System.out.println();
}
(3)
—-*
—*
–*
-*
–*
—*
—-*
for(int i=0;i<4;i++){
for(int j=4;j>i;j--){
System.out.print(" ");
}
for(int j2=0;j2<=i*2;j2++){
//0*2+1 : 1个*
//1*2+1 : 3个*
//2*2+1 : 5个*
//3*2+1 : 7个*
//4*2+1 : 9个*
System.out.print("*");
}
System.out.println();
}
/**
--*****
---***
----*
*/
for(int i=0;i<3;i++){
for(int j=0;j<i+2;j++){
//0: 2
//1: 3
//2: 4
System.out.print(" ");
}
for(int j2=0;j2<=(2-i)*2;j2++){
//(2-0)*2+1: 5个
//(2-1)*2+1: 3个
//(2-2)*2+1: 1个
System.out.print("*");
}
System.out.println();
}
(4)
----*
---* *
--* *
-* *
--* *
---* *
----*
----*
---***
--*****
-*******
--*****
---***
----*
for(int i=0;i<4;i++){
for(int j=4;j>i;j--){
System.out.print(" ");
}
for(int j2=0;j2<=i*2;j2++){
//0*2+1 : 1个*
//1*2+1 : 3个*
//2*2+1 : 5个*
//3*2+1 : 7个*
//4*2+1 : 9个*
if(j2==0||j2==i*2){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
/**
--*****
---***
----*
*/
for(int i=0;i<3;i++){
for(int j=0;j<i+2;j++){
//0: 2
//1: 3
//2: 4
System.out.print(" ");
}
for(int j2=0;j2<=(2-i)*2;j2++){
//(2-0)*2+1: 5个
//(2-1)*2+1: 3个
//(2-2)*2+1: 1个
if(j2==0||j2==(2-i)*2){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
多层 循环的退出
break;
默认情况下, 跳出最近的循环
案例:
计算0-10的数字相乘, 找到结果为21的第一对数字
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
System.out.println("正在运算");
if(i*j==21){
System.out.println("寻找到了第一个数字:"+i+","+j);
}
}
}
练习:
计算0-10的数字三数相乘(三层循环) , 找到结果为12的第一组 三个数,并打印
for(int x=0;x<10;x++){
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
System.out.println(“正在运算”);
if(i*j*x==12){
System.out.println(“寻找到了第一组数字:”+x+”,”+i+”,”+j);
}
}
}
}
编程规约
尽可能的使用空格与缩进:
例如 变量的定义:
int a = 10;
例如: 括号与代码的缩进
class Demo{
public static void main(String[] args){
int a = 10;
if(){
int b = 10;
}
}//tab 制表符
}
类名: 使用驼峰命名法: 所有单词的首字母大写, 其余字母小写!
class WhileDemo
变量名与方法名: 使用驼峰命名法: 首单词首字母小写 , 其余单词首字母大写, 其他字母小写
int personAge
int dongFei
int xdl_java_15 = 120;
数组:
基本数据类型
int a = 10;
引用数据类型
{1,4,7,9};
int 1 4 7 9 11 12 15
容器: 杯子 , 班级
定义:
是一组相同数据类型数据的容器 !
我们通过下标的方式, 访问数组中的元素, 下标是从0开始的
数组的最小下标为0 , 数组的最大下标为length-1(长度减一)
数组是定长的, 定义完毕长度后, 无法再修改 !
定义的格式:
格式1.
定义一个指定长度的空数组
数据类型[] 数组名 = new 数据类型[长度];
例如:
int[] array = new int[10];
格式2.
定义一个指定长度, 且指定具体内容的数组
数据类型[] 数组名 = {元素1,元素2,...元素n};
//大括号表示数组 ,里面的元素使用逗号隔开 , 大括号中的元素数量, 就是数组的长度 !
格式3.
仅定义变量名, 不进行初始化!
数据类型[] 数组名;
格式4.
数据类型[] 数组名 = new 数据类型[]{元素1,元素2...元素n};
错误案例:
int[] arr;
arr = {1,2,3,4,5};
数组中访问数据
我们通过下标的方式, 访问数组中的元素, 下标是从0开始的
数组的最小下标为0 , 数组的最大下标为length-1(长度减一)
格式:
数组名[下标]
数组中存储数据
格式:
数组名[下标] = 值;
将一个值, 赋值给数组中的一个下标, 如果原本有值 ,则覆盖 !
如何获取数组长度
格式:
int length = 数组名.length;
数组的遍历
指的是, 将数组中的所有元素, 依次取出的过程 !
for(int i=0;i<数组名.length;i++){
System.out.print(“—>>>>”+数组名[i]);
}
常见错误:
空指针异常
Exception in thread “main” java.lang.NullPointerException
at Demo6.main(Demo6.java:8)导致错误的原因,在于使用了未赋值的数组;
数组下标越界
访问的下标超出了边界
练习:已知一个空的int数组如下:
int[] arr = new int[10];
通过循环接收用户输入, 来为这个数组中的十个下标赋值 !
再通过循环遍历, 将数组中的所有数字进行打印
import java.util.Scanner;
public class Demo8{
public static void main(String[] args){
int[] arr = new int[10];
Scanner input = new Scanner(System.in);
//通过循环接收用户输入, 来为这个数组中的十个下标赋值 !
for(int i=0;i<10;i++){
System.out.println(“请输入第”+(i+1)+”数字:”);
arr[i] = input.nextInt();
}for(int i=0;i<10;i++){ System.out.println(arr[i]); } }
}
练习:已知有两个数组如下:
int[] arr1 = {5,4,22,56,78,93};
int[] arr2 = new int[12];
通过代码, 将arr1中的所有元素, 赋值给arr2对应的下标 ! (数组的复制)
for(int i=0;i