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();
		}
	}
}

  

 

  

原文地址:https://www.cnblogs.com/wlxslsb/p/10353220.html

时间: 2024-10-11 11:39:08

5.2多重循环和二维数组的相关文章

一个for循环打印二维数组

#include<stdio.h> #define MAXX 2 #define MAXY 3 void printarray() { int Arr[MAXX][MAXY] = {1,2,3,4,5,6}; for(int i = 0;i< MAXX*MAXY;i++) { printf("%d\n",Arr[i/MAXY][i%MAXY]); ///注意,一直没管MAXX什么事,在计算这一类的时候,最容易出问题 } } 一个for循环打印二维数组

php中foreach循环遍历二维数组

最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,所以在对返回的数据做处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题 (因为不知道该怎么设置where条件,设置只显示Jdate字段中今天以后的数据,所以只能在select查询后的数据中进行筛选..基础没大佬,真的挺麻烦) 进入正题 官方文档中给了foreach的两种用法 foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用

结对开发Ⅵ——循环二维数组求和最大的子数组

一.题目及要求 题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数.    二维数组首尾相接,象个一条首尾相接带子一样.     数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.  求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思路 (1)二维数组我们采用的还是数组的形式: (2)读取nxm的二维数组,储存成nx2m,把前m列重复加在二维数组的最后: (3)搜索最大数组的方法和不循环的二维数组是一样的,就是再加上判断条

二维数组 排序 随机数 练习

顺序排序方法 输出降序 import java.util.*; public class HW5_6_2 { static int x,t=0; //static int[]a=new int[x]; 如此int[]a 有默认值 数组会越界 /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("请输入数组长度"

Java基础---Java中的二维数组(三十四)

Java 中的二维数组 所谓二维数组,可以简单的理解为是一种"特殊"的一维数组,它的每个数组空间中保存的是一个一维数组. 那么如何使用二维数组呢,步骤如下: 1. 声明数组并分配空间 或者 如: 2. 赋值 二维数组的赋值,和一维数组类似,可以通过下标来逐个赋值,注意索引从 0 开始 也可以在声明数组的同时为其赋值 如: 3. 处理数组 二维数组的访问和输出同一维数组一样,只是多了一个下标而已.在循环输出时,需要里面再内嵌一个循环,即使用二重循环来输出二维数组中的每一个元素.如: 运行

JS 二维数组

给一个数组元素,赋一个数组的值,那么,这个数组就是“二维数组”. 二维数组,就得用两层循环来实现.也就是说循环套循环. 二维数组的循环,与二维表格的循环一模一样. 二维数组的访问:数组名后跟多个连续的中括号[],第1个中括号[]代表第一维数组,第2个中括号[]代表第二维数组.

题目一:使用Java实现二维数组中的查找

考点:数组 题目:二维数组中的查找 描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 方式一:选择从左下角开始搜寻,因为选择在左下角搜寻的话,如果目标值大于搜索值,那么就向右继续搜索,如果目标值小于搜索值,那么就向上继续搜索.在左上角就无法形成这样的判断.时间复杂度为:0(lgn) package cn.imooc.java2; public class Solution

OpenCV中Mat与二维数组之间的转换

---恢复内容开始--- 在OpenCV中将Mat(二维)与二维数组相对应,即将Mat中的每个像素值赋给一个二维数组. 全部代码如下: #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> //包含imread, imshow等标识符 #include "opencv2/imgproc/imgproc.hpp" //包含c

Java Array二维数组使用

二维数组:元素为一维数组的数组 package myArray.arrayarray; /* *二维数组:元素为一维数组的数组 * * 定义格式: * A:数组类型[][] 数组名: (推荐用法) * B:数组类型 数组名[][]; * C:数组类型[] 数组名[]; * 初始化: * A:动态初始化 * 数据类型[][] 数组名 = new 数据类型[m][n]; * m表示二维数组中一维数组的个数 * n表示一维数组的个数 * B:静态初始化 * 数据类型[][] 数组名 = new 数据类