zoukankan      html  css  js  c++  java
  • 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 +"	");
    //				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();
    		}
    	}
    }
    

      

     

      

  • 相关阅读:
    Tomcat 配置和springframework MVC配置简介
    Java监控工具、调优、调试辅助函数
    发布一个 Linux 下的 C++ 多线程库
    《程序中的日期与时间》第一章 日期计算
    《多线程服务器的适用场合》例释与答疑
    Muduo 网络编程示例之零:前言
    muduo 与 boost asio 吞吐量对比
    Muduo 网络编程示例之二:Boost.Asio 的聊天服务器
    计算机图书赠送
    muduo 与 libevent2 吞吐量对比
  • 原文地址:https://www.cnblogs.com/wlxslsb/p/10353220.html
Copyright © 2011-2022 走看看