一、for的嵌套循环
1.格式
//输出5行10列的矩形
for(int i=0;i<5;i++) {
for(int j=0;j<10;j++) {
System.out.print("*");
}
System.out.println();
}
2.实例
- 用*打印三角形
public class Model2 {
public static void main(String[] args) {
//正三角
for(int i=0;i<7;i+=2) {
for(int k=0;k<(7-i)/2;k++) {
System.out.print(" ");
}
for(int j=0;j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
//左倒三角
System.out.println("------------------");
for(int i=0;i<7;i++) {
for(int j=7;j>i;j--) {
System.out.print("*");
}
System.out.println();
}
//右倒三角
System.out.println("------------------");
for(int i=0;i<7;i++) {
for(int k=0;k<i;k++) {
System.out.print(" ");
}
for(int j=7;j>i;j--) {
System.out.print("*");
}
System.out.println();
}
}
}
结果
**********
**********
**********
**********
**********
*
***
*****
*******
------------------
*******
******
*****
****
***
**
*
------------------
*******
******
*****
****
***
**
*
- 打印九九乘法表
public class Model1 {
public static void main(String[] args) {
//for循环i作为第一个乘数
for(int i=1;i<=9;i++) {
//for循环j作为第二个乘数
for(int j=1;j<=i;j++) {
//将a作为字符串接收i*j的值
String a = ""+i*j;
//判断i*j结果是否为个位
if(i*j/10==0) {
//如果是个位则在前添加0
a = "0"+i*j;
}
//输出乘法表
System.out.print(j+"*"+i+"="+a);
//每次输出一个制表一次
System.out.print("\t");
}
//每打印一行换行
System.out.println("");
}
}
}
- 打印1-100的因数
public class Model3 {
public static void main(String[] args) {
for(int i=1;i<=100;i++) {
System.out.print(i+"的因数有:");
for(int j=1;j<=i;j++) {
if(i%j==0) {
if(j==i) {
System.out.print(j);
}else {
System.out.print(j+",");
}
}
}
System.out.println();
}
}
}
3.调出多重循环
- 加锁
//加锁
boolean b = true; //b相当于一个锁
while(b) {
for(int i=0;i<=20;i++) {
if(i==18) {
b = false;
break;
}
System.out.println("----------"+i);
}
}
- 跳出指定的代码块儿
//跳出指定的代码块儿
w:while(b) {
//为循环定义一个名
for(int i=0;i<=20;i++) {
if(i==18) {
break w; //直接break定义的名
}
System.out.println("----------"+i);
}
}
二、数组
1.声明数组
//声明数组
int array[];
int[] array2;//建议该种写法
//开辟空间
array = new int[3];//开辟3个空间,长度为3的数组
//开辟空间后,里面保存的是该类型的默认值
double[] array3 = new double[5];//声明长度为5的double数组
//声明并赋值
int[] array4 = {
1,2,3};
array4 = new int[] {
1,2,3,4};
array = new int[5];
//给第一个元素赋值
array[0] = 5;
2.注意事项
-
数组的类型和长度不可修改
-
数组中只能存放指定类型的数值
-
数组的下标不能超过最大下标,否则报错
3.获取数组长度
int a = array5.length;
4.工具类
import java.util.Arrays;
public class Model6 {
public static void main(String[] args) {
int[] array = new int[5];
//向指定数组中填充指定的数据
Arrays.fill(array, 5);
//将数组中的元素转为字符串后输出
System.out.println(Arrays.toString(array));
array = new int[] {
1,2,3,4,5,6,7};
//从原数组中复制指定长度的数据,超出部分补该数据类型的默认值
int[] array1 = Arrays.copyOf(array, 3);
System.out.println(Arrays.toString(array1));
int[] array = {
1,2,3,4,5,6,7,8,9,0};
int[] array2 = new int[8];
//从一个数组中复制到另一个数组指定位置、长度的数据
/**
* array是初始数组,
* 0代表从下表为零出开始复制,
* array2是目标数组,
* 3代表复制到目标数组中的位置
* 4代表将要复制的数据长度(不能超出初始数组大小)
*/
System.arraycopy(array, 0, array2, 3, 4);
System.out.println(Arrays.toString(array2));
}
}
5.二维数组
import java.util.Arrays;
public class Model8 {
public static void main(String[] args) {
//二维数组中有3个子元素,每个子元素的长度为4
int[][] arrays1 = new int[3][4];
//二维数组的子元素数是固定的
arrays1[1] = new int[3];
for(int i=0;i<arrays1.length;i++) {
for(int j=0;j<arrays1[i].length;j++) {
arrays1[i][j]=(int)(Math.random()*30);
}
System.out.println(Arrays.toString(arrays1[i]));
}
}
}
6.数组排序
- 冒泡排序
int[] array = {
4,5,3,0,8,3,2};
//前后两个元素比较,大的放到最后面
for(int i=0;i<array.length-1;i++) {
for(int j=0;j<array.length-i-1;j++) {
int num;
if(array[j] > array[j+1]) {
num = array[j];
array[j] = array[j+1];
array[j+1] = num;
}
}
}
System.out.println(Arrays.toString(array));
//前后两个元素比较,小的放到最前面
for(int j=0;j<array.length-1;j++) {
for(int i=j+1;i<array.length;i++) {
int num;
if(array[j]>array[i]) {
num = array[j];
array[j] = array[i];
array[i] = num;
}
}
}
System.out.println(Arrays.toString(array));
//--------------------------------------------
//以下为错误案例
/**
* 说明:内for循环可能一次循环就会改变数组顺序,所以array[i]的值需要再次获取
* 解决:将int a = array[i];放到内for循环中
*
*/
for(int i=0;i<array.length-1;i++) {
int a = array[i];
for(int j=i+1;j<array.length;j++) {
int num;
int b = array[j];
if(a>b) {
num = array[j];
array[j] = array[i];
array[i] = num;
}
}
}
System.out.println(Arrays.toString(array));
结果
[2, 3, 0, 3, 4, 5, 8]