5.2多重循环和二维数组

一.多重循环嵌套
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 +"\t");
//				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+"\t");
//			}
//			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]+"\t");
//			}
//			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]+"\t");
//			}
//			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]+"\t");
			}
			System.out.println();
		}
	}
}

  

 

 

  

 

posted @ 2019-02-05 21:56  五柳先生柳三变  阅读(347)  评论(0编辑  收藏  举报