数组-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() ...
随机推荐
- MySQL查询当天、本周、本月数据语句
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- Java 虚拟机面试题全面解析(干货)
Java 虚拟机面试题全面解析(干货) JDK 是什么 JRE 是什么 Java历史版本的特性 Java Version SE 50 Java Version SE 6 Java Version SE ...
- 60.纯 CSS 创作一块乐高积木
原文地址:https://segmentfault.com/a/1190000015369542 感想:y轴旋转,相对定位,今天有点懵呀,唉. HTML code: <!-- 定义dom,容器中 ...
- leetcode581
public class Solution { public int FindUnsortedSubarray(int[] nums) { , end = -, min = nums[n - ], m ...
- postgresql数据库varchar、char、text的比较
名字 描述character varying(n), varchar(n) 变长,有长度限制character(n), char(n) 定长,不足补空白text 变长,无长度限制简单来说,varcha ...
- URL和URI
(一)URL和URI是什么 1.URL(Universal Resource Locator) 是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址. ...
- Scrollview包裹布局问题。
输入框获取焦点,键盘弹出,背景图片上移: https://blog.csdn.net/wljian1/article/details/79962802 android:scrollbarThumbVe ...
- Setting up Scatter for Web Applications
[Setting up Scatter for Web Applications] If you are still using scatter-js please move over to scat ...
- 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作
一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...
- easyui多图片上传+预览切换+支持IE8
引入css和js: <link href="${pageContext.request.contextPath}/plugin/dialog/dialog.css" rel= ...