java-04 数组和二维数组
java 中内存分配地址值以及栈和堆得区别:
##########数组操作的两个常见小问题(越界和空指针)##############
数组索引越界异常,访问了不存在的索引:
空指针:
#################数组常见操作#################
- /*
- * 依次输出数组数组中的每一个元素
- */
- public class ShuZu {
- public static void main(String[] args) {
- int [] arry = {11,22,33,44,55,66};
- for (int i = 0; i < arry.length; i++) {
- System.out.println("数组的第"+i+"个是"+arry[i]);
- }
- }
- }
结果:
数组的第0个是11
数组的第1个是22
数组的第2个是33
数组的第3个是44
数组的第4个是55
数组的第5个是66
改进版:
- /*
- * 依次输出数组数组中的每一个元素
- */
- public class ShuZu {
- public static void main(String[] args) {
- int [] arry = {11,22,33,44,55,66};
- printArry(arry);
- }
- public static void printArry(int [] arry){
- for (int i = 0; i < arry.length; i++) {
- System.out.println(arry[i]);
- }
- }
- }
2.数组操作获取数组中的最大最小值:
- /*
- * 输出数组中的最大值
- */
- public class ShuZu {
- public static void main(String[] args) {
- int [] arry = {44,33,22,11,55,66};
- int result = max(arry);
- System.out.println("数组中的最大值是:"+result);
- }
- public static int max(int [] arry){
- int max = arry[0];
- for (int i = 0; i < arry.length; i++) {
- if(arry[i]>max){
- max = arry[i];
- }
- }
- return max;
- }
- }
- 结果:
数组中的最大值是:66
#################数组逆序#################
- /*
- 数组元素逆序 (就是把元素对调)
- 分析:
- A:定义一个数组,并进行静态初始化。
- B:思路
- 把0索引和arr.length-1的数据交换
- 把1索引和arr.length-2的数据交换
- ...
- 只要做到arr.length/2的时候即可。
- */
- class ArrayTest3 {
- public static void main(String[] args) {
- //定义一个数组,并进行静态初始化。
- int[] arr = {12,98,50,34,76};
- //逆序前
- System.out.println("逆序前:");
- printArray(arr);
- //逆序后
- System.out.println("逆序后:");
- //reverse(arr);
- reverse2(arr);
- printArray(arr);
- }
- /*
- 需求:数组逆序
- 两个明确:
- 返回值类型:void (有人会想到应该返回的是逆序后的数组,但是没必要,因为这两个数组其实是同一个数组)
- 参数列表:int[] arr
- */
- public static void reverse(int[] arr) {
- /*
- //第一次交换
- int temp = arr[0];
- arr[0] = arr[arr.length-1-0];
- arr[arr.length-1-0] = temp;
- //第二次交换
- int temp = arr[1];
- arr[1] = arr[arr.length-1-1];
- arr[arr.length-1-1] = temp;
- //第三次交换
- int temp = arr[2];
- arr[2] = arr[arr.length-1-2];
- arr[arr.length-1-2] = temp;
- */
- //用循环改进
- for(int x=0; x<arr.length/2; x++) {
- int temp = arr[x];
- arr[x] = arr[arr.length-1-x];
- arr[arr.length-1-x] = temp;
- }
- }
- public static void reverse2(int[] arr) {
- for(int start=0,end=arr.length-1; start<=end; start++,end--) {
- int temp = arr[start];
- arr[start] = arr[end];
- arr[end] = temp;
- }
- }
- //遍历数组
- public static void printArray(int[] arr) {
- System.out.print("[");
- for(int x=0; x<arr.length; x++) {
- if(x == arr.length-1) { //这是最后一个元素
- System.out.println(arr[x]+"]");
- }else {
- System.out.print(arr[x]+", ");
- }
- }
- }
- }
#################二维数组##################
############二维数组遍历#####################
- public class ErW {
- public static void main(String[] args) {
- int [][] tarry = {{22,66,44},{77,33,88},{25,45,65},{11,69,99}};
- for (int i = 0; i < tarry.length; i++) {
- System.out.println(i+"数组:");
- for (int j = 0; j < tarry[i].length; j++) {
- System.out.print(tarry[i][j]+"\t");
- }
- System.out.println();
- }
- }
- }
结果:
0数组:
22 66 44
1数组:
77 33 88
2数组:
25 45 65
3数组:
11 69 99
函数是遍历二维数组:
- public class ErW {
- public static void main(String[] args) {
- int [][] tarry = {{22,66,44},{77},{25,45,65},{11,69,99}};
- printArry(tarry);
- /*
- for (int i = 0; i < tarry.length; i++) {
- System.out.println(i+"数组:");
- for (int j = 0; j < tarry[i].length; j++) {
- System.out.print(tarry[i][j]+" ");
- }
- System.out.println();
- }
- */
- }
- public static void printArry(int [][]tarray ) {
- for (int i = 0; i < tarray.length; i++) {
- for (int j = 0; j < tarray[i].length; j++) {
- System.out.print(tarray[i][j]+" ");
- }
- System.out.println();
- }
- }
- }
结果:
22 66 44
77
25 45 65
11 69 99
求和:
- public class ErW {
- public static void main(String[] args) {
- int [][] tarry = {{22,66,44},{77,33,88},{25,45,65},{11,69,99}};
- printArry(tarry);
- /*
- for (int i = 0; i < tarry.length; i++) {
- System.out.println(i+"数组:");
- for (int j = 0; j < tarry[i].length; j++) {
- System.out.print(tarry[i][j]+" ");
- }
- System.out.println();
- }
- */
- }
- public static void printArry(int [][]tarray ) {
- int sum = 0;
- for (int i = 0; i < tarray.length; i++) {
- for (int j = 0; j < tarray[i].length; j++) {
- sum += tarray[i][j] ;
- }
- System.out.println("sum"+i+":"+sum);
- }
- }
- }
- 输出结果为:
sum0:132
sum1:330
sum2:465
sum3:644
#############杨辉三角################
- /*
- 需求:打印杨辉三角形(行数可以键盘录入)
- 1
- 1 1
- 1 2 1
- 1 3 3 1
- 1 4 6 4 1
- 1 5 10 10 5 1
- 分析:看这种图像的规律
- A:任何一行的第一列和最后一列都是1
- B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
- 步骤:
- A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n。
- 这个n的数据来自于键盘录入。
- B:给这个二维数组任何一行的第一列和最后一列赋值为1
- C:按照规律给其他元素赋值
- 从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
- D:遍历这个二维数组。
- */
- import java.util.Scanner;
- class Array2Test3 {
- public static void main(String[] args) {
- //创建键盘录入对象
- Scanner sc = new Scanner(System.in);
- //这个n的数据来自于键盘录入。
- System.out.println("请输入一个数据:");
- int n = sc.nextInt();
- //定义二维数组
- int[][] arr = new int[n][n];
- //给这个二维数组任何一行的第一列和最后一列赋值为1
- for(int x=0; x<arr.length; x++) {
- arr[x][0] = 1; //任何一行第1列
- arr[x][x] = 1; //任何一行的最后1列
- }
- //按照规律给其他元素赋值
- //从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。
- for(int x=2; x<arr.length; x++) {
- //这里如果y<=x是有个小问题的,就是最后一列的问题
- //所以这里要减去1
- //并且y也应该从1开始,因为第一列也是有值了
- for(int y=1; y<=x-1; y++) {
- //每一个数据是它上一行的前一列和它上一行的本列之和。
- arr[x][y] = arr[x-1][y-1] + arr[x-1][y];
- }
- }
- //遍历这个二维数组。
- /*
- for(int x=0; x<arr.length; x++) {
- for(int y=0; y<arr[x].length; y++) {
- System.out.print(arr[x][y]+"\t");
- }
- System.out.println();
- }
- */
- //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似
- for(int x=0; x<arr.length; x++) {
- for(int y=0; y<=x; y++) {
- System.out.print(arr[x][y]+"\t");
- }
- System.out.println();
- }
- }
- }
结果:
please a number:
6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
java-04 数组和二维数组的更多相关文章
- java怎么定义一个二维数组?
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...
- java - day005 - 数组工具类, 数组复制,二维数组,变量,方法, 面向对象
1. java.util.Arrays 数组工具类 Arrays.toString (数组) 数组值链接字符串 Arrays.sort(数组) 基本类型: 优化的快速排序 引用类型: 优化的合 ...
- Java数组之二维数组
Java中除了一维数组外,还有二维数组,三维数组等多维数组.本文以介绍二维数组来了解多维数组. 1.二维数组的基础 二维数组的定义:二维数组就是数组的数组,数组里的元素也是数组. 二维数组表示行列二维 ...
- java基础5 (一维)数组和二维数组
本文知识点(目录): 一维数组(一维数组的概念.优点.格式.定义.初始化.遍历.常见异常.内存分析以及常见操作(找最大值.选择排序.冒泡排序等等)) 二维数组(二维数组的遍历.排序.查找.定义. ...
- Java编程基础——数组和二维数组
Java编程基础——数组和二维数组 摘要:本文主要对数组和二维数组进行简要介绍. 数组 定义 数组可以理解成保存一组数的容器,而变量可以理解为保存一个数的容器. 数组是一种引用类型,用于保存一组相同类 ...
- 一维数组、二维数组——Java
一. 一维数组 1. 数组是相同类型数据的有序集合 相同类型的若干个数据,按照一定先后次序排列组合而成 每个数组元素可以通过一个下标来访问它们 其中,每一个数据称作一个数组元素 2. 数组特点: 其 ...
- java基础知识点补充---二维数组
#java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...
- 062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用
062 01 Android 零基础入门 01 Java基础语法 07 Java二维数组 01 二维数组应用 本文知识点:二维数组应用 二维数组的声明和创建 ? 出现空指针异常 数组的名字指向数组的第 ...
- JAVA描述算法和数据结构(01):稀疏数组和二维数组转换
本文源码:GitHub·点这里 || GitEE·点这里 一.基本简介 1.基础概念 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵:与之相反, ...
- Java知识系统回顾整理01基础06数组06二维数组
一.一维数组和二维数组 这是一个一维数组, 里面的每一个元素,都是一个基本类型int int a[] =new int[]{1,2,3,4,5}; 这是一个二维数组,里面的每一个元素,都是一个一维数组 ...
随机推荐
- 朴素贝叶斯分类算法-----java
1.贝叶斯分类的基础--贝叶斯定理 已知某条件概率.怎样得到两个事件交换后的概率,也就是在已知P(A|B)的情况下怎样求得P(B|A). 这里先解释什么是条件概率: 表示事件B已经发生的前提下,事件A ...
- 自己定义ViewGroup控件(二)----->流式布局进阶(二)
main.xml <?xml version="1.0" encoding="utf-8"? > <com.example.SimpleLay ...
- spark之pycharm开发设置
方法一: __author__ = 'similarface' import os import sys os.environ['SPARK_HOME']="/Users/similarfa ...
- eclipse不能添加tomcat
有时候原来能新建server,删掉后就不能新建了 1.退出eclipse 2.到[工程目录下 workspace ]/.metadata/.plugins/org.eclipse.core.runti ...
- Linux下文件名正常,下载之后在windows打开为乱码
说明:在Linux下编码为utf-8,在windows下位GBK 1. 2. 3. 4. 5. 6. 7. 8.
- python创建迅雷批量任务
其实不是真的创建了批量任务,而是用python创建一个文本文件,每行一个要下载的链接,然后打开迅雷,复制文本文件的内容,迅雷监测到剪切板变化,弹出下载全部链接的对话框~~ 实际情况是这样的,因为用py ...
- 对于一个有序数组,我们通常采用二分查找的方式来定位某一元素,请编写二分查找的算法,在数组中查找指定元素。 给定一个整数数组A及它的大小n,同时给定要查找的元素val,请返回它在数组中的位置(从0开始),若不存在该元素,返回-1。若该元素出现多次,请返回第一次出现的位置。
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...
- 【特征匹配】SIFT原理与C源代码剖析
相关: KD树+BBF算法解析 SURF原理与源代码解析 SIFT的原理已经有非常多大牛的博客上做了解析,本文重点将以Rob Hess等人用C实现的代码做解析,结合代码SIFT原理会更easy理解.一 ...
- centOS中修改语言环境
在终端中打开 键入 vim ~/.bashrc 在最后一行键入 export LANG="zh_CH.UTF-8"
- Dynamic Resource – 动态资源
Dynamic Resource – 动态资源 与Static Resource不同的是,Dynamic Resource可以在程序运行时重新评估/计算资源来生成对应的对象/值,它支持向前引用,只 ...