数组-Array
1.数组的概念
/*
数组的格式 数组:
同一种数据类型的若干个值的容器 元素:数组中的值称为元素
索引:元素的标号,从0开始
长度:数组中元素的个数
*/
public class ArrayDemo1{
public static void main(String[] args){ int a = 1;
int b = 2;
int c = 3; //数据类型 变量名 = 初始值; //定义数组,第一种格式:动态初始化,定义数组时,不指定数组里具体的值.
int[] arr = new int[10]; //第二种静态初始化:定义数组时,元素已经确定
int[] arr2 = new int[]{1,2,3};
//简化写法
int[] arr3 = {10,20,30};
}
}
2.数组元素的使用
/*
数组元素的使用:
数组名[索引值] 数组元素的默认值:
能为0的为0,能为0.0的为0.0,能为false的为false,能为null的为null
*/
public class ArrayDemo2{
public static void main(String[] args){
//创建一个长度为5的int型数组
// double[] arr = new double[5];
// boolean[] arr = new boolean[5];
// String[] arr = new String[5]; /* System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
*/ // int[] arr = new int[5];
// byte[] arr = new byte[5];
// short[] arr = new short[5];
// char[] arr = new char[5];
// int[] arr = new int[5];
//用循环改进
for(int i = 0;i<5;i++){
System.out.println(arr[i]);
}
}
}
3.获取数组中的最值
/*
获取数组的最值(最大值,最小值) int[] arr = {1,4,3,2}; */
public class ArrayDemo3{
public static void main(String[] args){
/*
int[] arr = getArray(20);
printArray(arr);
int max = getMax(arr);
System.out.println("最大值是: " + max);
int min = getMin(arr);
System.out.println("最小值是: " + min);
*/
printArray(getUniqueArray(20));
} //获取一个int型数组的最大值
public static int getMax(int[] arr){
int max = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
} //获取一个int型数组的最小值
public static int getMin(int[] arr){
int min = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i] < min){
min = arr[i];
}
}
return min;
} //获取一个范围是1-50之间的int数组
public static int[] getArray(int n){
int[] arr = new int[n];
//循环产生随机数,放到数组中
for(int i = 0;i<arr.length;i++){
int r = (int)(Math.random() * 50 + 1);
arr[i] = r;
} return arr;
} //打印数组元素
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
} //生成一个不包含重复元素的int型数组
public static int[] getUniqueArray(int n){
int[] arr = new int[n];//
for(int i = 0;i<arr.length;i++){
int r = (int)(Math.random() * 50 + 1);
while(isExist(arr,r)){
r = (int)(Math.random() * 50 + 1);
}
arr[i] = r;
}
return arr;
} //判断一个数组中是否包含某个数值
public static boolean isExist(int[] arr,int value){
for(int i = 0;i<arr.length;i++){
if(value == arr[i]){
return true;
}
}
return false;
}
}
4.从键盘录入数据,并求最值
/*
从键盘录入数组的元素,并求最值
*/
import java.util.Scanner; public class ArrayDemo4{
public static void main(String[] args){
int[] arr = genArray();
System.out.println("最大值是: " + getMax(arr));
System.out.println("最小值是: " + getMin(arr));
} //从键盘录入数据,并返回一个int型数组
public static int[] genArray(){
Scanner s = new Scanner(System.in); System.out.print("输入数组的长度 : ");
int len = s.nextInt();
int[] arr = new int[len]; for(int i = 0;i<arr.length;i++){
System.out.print("请输入第"+ (i+1) + "个数: ");
arr[i] = s.nextInt();
} return arr;
} //获取最小值
public static int getMin(int[] arr){
int min = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i] < min){
min = arr[i];
}
}
return min;
} //获取最大值
public static int getMax(int[] arr){
int max = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
}
5.随机生成一个5个元素在(1-10)的int型数组,求一个随机数在这个数组中第一次出现的索引值
/*
随机生成一个5个元素(1-10)的int型数组,求一个随机数在这个数组中第一次出现的索引值
*/
public class ArrayDemo6{
public static void main(String[] args){
int[] arr = genArray();
printArray(arr);
int r = (int)(Math.random() * 10 + 1);
int index = getIndex(arr,r); if(index < 0){
System.out.println(r + "没找到");
}else{
System.out.println(r + "第一次出现的索引是: " + index);
} } //获取一个数在指定数组中出现的第一次索引值
public static int getIndex(int[] arr,int value){
for(int i = 0;i<arr.length;i++){
if(arr[i] == value){
return i;
}
}
return -1;
} //生成一个int型数组
public static int[] genArray(){
int[] arr = new int[5];
for(int i = 0;i<arr.length;i++){
int r = (int)(Math.random() * 10 + 1);
arr[i] = r;
}
return arr;
} //打印数组
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
6.用数组模拟裁判打分
5个裁判,去掉最高分和最低分,然后求剩余元素的平均值.
/*
用数组模拟打分:
5个裁判,去掉最高分,最低分,然后求剩余元素的平均值作为最终得分
*/
public class ArrayDemo7{
public static void main(String[] args){
int n = 5;
int[] arr = genArray(n);
print(arr); double avg = getAvg(arr);
System.out.println("平均分是: " + avg); } //求平均值
public static double getAvg(int[] arr){
int max = getMax(arr);
int min = getMin(arr); double sum = 0.0;
for(int i = 0;i<arr.length;i++){
sum += arr[i];
} sum = sum - max - min; return sum / (arr.length - 2);
} //求最大值
public static int getMax(int[] arr){
int max = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
} //求最小值
public static int getMin(int[] arr){
int min = arr[0];
for(int i = 1;i<arr.length;i++){
if(arr[i] < min){
min = arr[i];
}
}
return min;
} //
public static int[] genArray(int n){
int[] arr = new int[n];
for(int i = 0;i<arr.length;i++){
arr[i] = (int)(Math.random() * 101);
}
return arr;
} public static void print(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
7.定义一个int型数组,定义方法,把数组的元素变成原来的2倍
/*
定义一个int型数组,定义方法,把数组的元素变成原来的2倍
*/
public class ArrayTest{
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
printArray(arr); doubleArray(arr);
printArray(arr);
} //将元素变成原来的2倍
public static void doubleArray(int[] arr){
for(int i = 0;i<arr.length;i++){
arr[i] = arr[i] * 2;
}
} //打印数组元素
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
8.数组的复制:返回值类型是数组
判断堆空间中的两个对象是否是同一数组,可以使用 ==判断他们的地址值
/*
数组的复制:返回值类型是数组
判断堆空间中的两个对象(数组)是否是同一个数组,可以使用 == 判断他们的地址值
*/
public class CopyArrayDemo{
public static void main(String[] args){
int[] arr1 = genArray();
print(arr1);
int[] arr2 = copyArray(arr1);
// int[] arr2 = arr1;
print(arr2); // System.out.println(arr1 == arr2);//
System.out.println(arr1);//[I@6d06d69c 类型@十六进制值
} public static int[] genArray(){
int[] arr = new int[5];
for(int i = 0;i<arr.length;i++){
int r = (int)(Math.random() * 50 + 1);
arr[i] = r;
}
return arr;
} public static void print(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
} //int[]
//int[]
public static int[] copyArray(int[] arr){
//创建一个和参数一样大小的数组
int[] copy = new int[arr.length];
//遍历参数的数组,把元素拷贝到新数组中
for(int i = 0;i<arr.length;i++){
copy[i] = arr[i];
} return copy;
}
}
9.自定义方法之间的互相调用
/*
演示自定义方法之间的互相调用
*/
public class Demo{
public static void main(String[] args){
introduce("Zhangsan");
} //
public static void sayHi(){
System.out.println("Hello");
} //
public static void introduce(String name){//name = "Zhangsan";
sayHi();//调用自定义方法
System.out.println("My name is : " + name);
}
}
10.求两个double值得四则运算结果
/*
求两个double值的四则运算结果
*/
public class Demo2{
public static void main(String[] args){
test(10.0,2.0);
} //void
//double d1,double d2
public static void test(double d1,double d2){
System.out.println("两个数的和是: " + (d1 + d2));
System.out.println("两个数的差是: " + (d1 - d2));
System.out.println("两个数的积是: " + (d1 * d2));
System.out.println("两个数的商是: " + (d1 / d2));
} }
11.数组的常见异常
/*
数组操作的常见异常
1.数组索引越界
2.空指针异常
*/
public class ExceptionDemo{
public static void main(String[] args){
int[] arr = new int[]{1,2,3,4,5,6};
int[] arr2 = new int[]{7,8,9};
int[] arr3 = new int[]{70,80,90}; printArray(arr);
printArray(arr2);
printArray(arr3); boolean[] arr4 = {true,false,true,true};
printArray(arr4); // System.out.println(arr.length); // for(int i = 0;i<3;i++){//根据数组的length属性动态的获取数组的长度
// for(int i = 0;i<arr.length;i++){
// System.out.println(arr[i]);
// } // System.out.println(arr[0]);
// System.out.println(arr[1]);
// System.out.println(arr[2]);
// System.out.println(arr[30]);//java.lang.ArrayIndexOutOfBoundsException:数组索引越界异常
// for(int i = 0;i<arr.length;i++){
// System.out.println(arr[i]);
// }
// arr = null;
// System.out.println(arr[2]);//java.lang.NullPointerException:空指针异常
// for(int i = 0;i<arr.length;i++){
// System.out.println(arr[i]);
// }
} //void
//int[] arr
public static void printArray(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
} public static void printArray(boolean[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
12.合并两个数组
/*
合并两个数组
data1 = [1,2,3] data2 = [4,5,6]
*/
public class MergeDemo{
public static void main(String[] args){
int[] arr1 = genArray();
int[] arr2 = genArray();
System.out.println("生成的第一个小数组是:");
print(arr1);
System.out.println("生成的第二个小数组是:");
print(arr2); int[] res = merge(arr1,arr2);
System.out.println("合并之后的数组是:");
print(res);
} //随机生成一个长度随机(1-5)的int数组(1-50)
public static int[] genArray(){
int len = (int)(Math.random() * 5 + 1);
int[] arr = new int[len];
for(int i = 0;i<arr.length;i++){
arr[i] = (int)(Math.random() * 50 + 1);
}
return arr;
} //合并两个数组
public static int[] merge(int[] a,int[] b){
int[] bigArray = new int[a.length + b.length];
int index = 0;
for(int i = 0;i<a.length;i++){
bigArray[index] = a[i];
index++;
} for(int i = 0;i<b.length;i++){
bigArray[index] = b[i];
index++;
}
return bigArray;
/*
for(int i = 0;i<a.length;i++){
bigArray[i] = a[i];
} //
for(int i = 0;i<b.length;i++){
bigArray[i + a.length] = b[i];
}
return bigArray;
*/
} public static void print(int[] arr){
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
13.
数组-Array的更多相关文章
- Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别
ArrayList和Vector的区别ArrayList与Vector主要从二方面来说. 一.同步性: Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步 ...
- go 数组(array)、切片(slice)、map、结构体(struct)
一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...
- javascript类型系统——数组array
× 目录 [1]创建 [2]本质 [3]稀疏[4]长度[5]遍历[6]类数组 前面的话 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javascript中的数组与 ...
- swift基本用法-数组array
数组简单用法 //------------------------------------------------------------------------------ // 1. 数组定义 / ...
- C#中数组Array、ArrayList、泛型List<T>的比较
在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...
- Javascript基础系列之(四)数据类型 (数组 array)
字符串,数值,布尔值都属于离散值(scalar),如果某个变量是离散的,那么任何时候它只有一个值. 如果想使用变量存储一组值,就需要使用数组(array). 数组是由多个名称相同的树值构成的集合,集合 ...
- AS3 - 数组Array的几个常用方法(附样例)
AS3 - 数组Array的几个常用方法(附样例) 2015-03-30 10:39发布:hangge浏览:241 Flex/Flash开发中,经常会使用到数组,下面总结了一些数组的常用方法. 1 ...
- Linux数组array基础
Linux数组array基础[${a[*]}和$a的区别] Bash中,数组变量的赋值有两种方法: (1) name = (value1 ... valuen) 此时下标从0开始 (2) name[i ...
- 学习Swift -- 数组(Array) - 持续更新
集合类型--数组 Array是Swift中的一种集合类型:数组,数组是使用有序列表储存同一类型的多个值,与OC的NSArray的最大不同是,Swift的数组是值类型,OC的数组是引用类型 声明数组的方 ...
- 数据结构之数组Array
数组Array 基本操作 Status InitArray(int dimm,...)//若维数dim和随后的各维长度合法,则构造相应的数组A,并返回OK Status DestroyArray() ...
随机推荐
- Oracle SQL 优化规则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- python3 互译无线短信接口
#!/usr/local/bin/python#-*- coding:utf-8 -*-import http.clientimport urllibimport random host = &quo ...
- ODPS SQL <for 数据定义语言 DDL>
数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...
- wget 网站扒取
wget --mirror --page-requisites --adjust-extension --no-parent --convert-links http://target.com
- 微信小程序 验证码倒计时组件
https://blog.csdn.net/susuzhe123/article/details/80032224
- centos7-内核版本降级
1. 查看内核版本参考命令: [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [roo ...
- 测试Linux下tcp最大连接数限制
现在做服务器开发不加上高并发根本没脸出门,所以为了以后吹水被别人怼“天天提高并发,你自己实现的最高并发是多少”的时候能义正言辞的怼回去,趁着元旦在家没事决定自己写个demo搞一搞. 这个测试主要是想搞 ...
- 利用DWORD SHOOT实现堆溢出的利用(先知收录)
原文链接:https://xz.aliyun.com/t/4009 1.0 DWORD SHOOT是什么捏? DWORD SHOOT指能够向内存任意位置写入任意数据,1个WORD=4个bytes,即可 ...
- 515. Find Largest Value in Each Tree Row查找一行中的最大值
[抄题]: You need to find the largest value in each row of a binary tree. Example: Input: 1 / \ 3 2 / \ ...
- [leetcode]42. Trapping Rain Water雨水积水问题
Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...