一.多重循环嵌套
1.循环可以任意次数嵌套
2.外层循环每执行一次,里层循环就执行一遍
二.二维数组
1.定义:一维数组中存放的也是数组
2.声明:int[][] nums = new int[5][5];
3.使用:nums[0][0] = 1; 我们可以将第一个下标理解为行数,第二个下标理解为列数
三.引用数据类型和基本数据类型的区别
1.基本数据类型存放的是数据,引用数据类型存放的是内存地址
2.基本数据类型赋值的话传递的是数据,而引用数据类型传递的是地址
四.例子
package com.demo1030; import java.util.Scanner; public class Demo { //例题:输出1--100的数字,要求每行输出10的数字 // public static void main(String[] args) { // int num = 1; // for(int i=0;i<10;i++){//行 // for(int j=0;j<10;j++){//列 // System.out.print(num +" "); // num++; // } // System.out.println(); // } // } /*2。打印输出如下图形:要求,用户输入行数,按照行数打印图形 * ** *** **** ***** ****** ******* ******** **/ // public static void main(String[] args) { // Scanner scs = new Scanner(System.in); // System.out.println("请输入行数:"); // int count = scs.nextInt(); // for(int i=0;i<count;i++){//行 输出换行 // for(int j=0;j<=i;j++){//列 输出* // System.out.print("*"); // } // System.out.println(); // } // } /** * 3.输出乘法口诀表 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ....... 1*9=9 ....................9*9=81 */ // public static void main(String[] args) { // for(int i=1;i<=9;i++){//行 输出换行 // for(int j=1;j<=i;j++){//列 输出* // System.out.print(i+"*"+j+"="+i*j+" "); // } // System.out.println(); // } // } /** * 4.输出如下图形 * *** ***** ******* ********* *********** */ // public static void main(String[] args) { // for(int i=1;i<=6;i++){//行 // for(int j=6;j>i;j--){//空格 // System.out.print(" "); // } // for(int k=1;k<=2*i-1;k++){//输出* // System.out.print("*"); // } // System.out.println(); // } // } //5.声明一个10行10列的二维数组,把里面的所有元素赋值为1,然后输出 // public static void main(String[] args) { // int[][] nums = new int[10][10]; // for (int i = 0; i < nums.length; i++) { // for(int j=0;j<nums[i].length;j++){ // nums[i][j] = 1; // } // } // // for (int i = 0; i < nums.length; i++) { // for(int j=0;j<nums[i].length;j++){ // System.out.print(nums[i][j]+" "); // } // System.out.println(); // } // } //基本数据类型和引用数据类型的区别 // public static void main(String[] args) { // int xm = 100; // int xh =200; // // xm = xh; // xm = 1000; // // System.out.println("xm="+xm); // System.out.println("xh="+xh); // // int[] xxm = {100}; // int[] xxh = {200}; // // xxm = xxh; // // xxm[0] = 1000; // System.out.println("xxm="+xxm[0]); // System.out.println("xxh="+xxh[0]); // } //6.声明一个9行9列的二维数组,将1-81的数字填入到数组中 // a.先输出所有元素的值 // b.求两条对角线上的元素之和 // public static void main(String[] args) { // int[][] nums = new int[9][9]; // //存放1-81数字 // int num=1; // for (int i = 0; i < nums.length; i++) { // for (int j = 0; j < nums[i].length; j++) { // nums[i][j] = num; // num++; // } // } // // //输出 // for (int i = 0; i < nums.length; i++) { // for (int j = 0; j < nums[i].length; j++) { // System.out.print(nums[i][j]+" "); // } // System.out.println(); // } // // //计算对角线元素之和 // int sum1 = 0;//对角线1 // int sum2 = 0; //对角线2 // for (int i = 0; i < nums.length; i++) { // for (int j = 0; j < nums[i].length; j++) { // if(i==j){//第一条对角线 // sum1+=nums[i][j]; // } // if(i+j==nums.length-1){ // sum2+=nums[i][j]; // } // } // } // // System.out.println(sum1); // System.out.println(sum2); // } }
/** * 1.用户输入行数,要求行数必须是奇数,如果不是让用户重新输入。 * 然后根据行数打印输出菱形 * *** ***** ******* ********* ******* ***** *** * */ package class1030; import java.util.Scanner; public class Test0201 { public static void main(String[] args) { // TODO Auto-generated method stub int nums,nums2; Scanner sc=new Scanner(System.in); do{ System.out.println("请输入一个奇数"); nums=sc.nextInt(); if(nums<0||nums%2!=1){ System.out.println("输入有误,请重新输入"); } }while(nums<0||nums%2!=1); nums2=nums/2+1; for(int i=1;i<=nums2;i++) { for(int j=1;j<=nums2-i;j++) { System.out.print(" "); } for(int k=1;k<=2*i-1;k++) { System.out.print("*"); } System.out.println(); } nums2=nums/2; for(int i=1;i<=nums2;i++) { for(int j=1;j<=i;j++) { System.out.print(" "); } for(int k=1;k<=2*(nums2-i)+1;k++) { System.out.print("*"); } System.out.println(); } } }
/** * 2.用户输入一个正整数,做因式分解:例如 * 输入100 输出100=2*2*5*5 * 输入90 输出90=2*3*3*5 * 输入13 输出13=1*13 */ package class1030; import java.util.Scanner; public class Test0202 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); System.out.println("请输入一个正整数"); int num=sc.nextInt(); int i; int num1=num; System.out.print(num+"="); //最小公因数i是这个数本身时跳出循环 while(num!=1) { //从2开始整除,找到最小公因数时就跳出循环,每次得到最小公因数i for(i=2;i<num;i++) { if(num%i==0) { break; } } //如果最小公因数i是这个数本身时,为质数,本轮循环结束后将跳出while循环 if(i==num1) { System.out.print("1*"); } //每次输出最小公因数i System.out.print(i); //得到除以最小公因数i后的值,继续判断是否还有最小公因数 num=num/i; //当最小公因数i是不是这个数本身时,输出乘号 if(num!=1) { System.out.print("*"); } } } }
/* * 3.打印输出杨辉三角形(10行): 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 ......... */ package class1030; public class Test0203 { public static void main(String[] args) { // TODO Auto-generated method stub int arr[][]=new int[10][]; for(int i=0;i<arr.length;i++){ arr[i]=new int[i+1]; for(int j=0;j<arr[i].length;j++){ if(j==i||j==0){ arr[i][j]=1; }else{ if(j<i){ arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; } } System.out.print(arr[i][j]+" "); } System.out.println(); } } }