一维数组的定义格式:
int[] a; //定义一个int类型的数组a变量
int a[]; //定义一个int类型的a数组变量
初始化一个int类型的数组
int[] arr = new int[3];
System.out.println(arr[0]); //0
class ArrayDemo { public static void main(String[] args){ //定义数组 int[] arr={1,3,4}; System.out.println(arr[2]); } }
遍历数组:
/* java中获取数组的长度: 数组名.length */ class ArraryTest{ public static void main(String[] args){ int[] arr = {1,2,3,4}; for(int x = 0;x<arr.length;x++){ System.out.println(arr[x]); }
} }
调用方法遍历数组:
class ArrayDemo { /** *调用方法打印数组的值 */ public static void main(String[] args){ int[] arr = {11,22,33,44,55}; getArr(arr); } public static void getArr(int[] arr){ for(int x = 0;x<arr.length;x++){ System.out.println(arr[x]); } } }
获取数组中的最大值:
class ArrayDemo { /** *获取数组中最大的值 */ public static void main(String[] args){ int[] arr = {22,23,35,55,34}; int max = getArrMax(arr); System.out.println(max); } //返回数组中的最大值 public static int getArrMax(int[] arr){ //假设数组中的第一个为最大值 int max = arr[0]; for(int x=0;x<arr.length;x++){ if(arr[x]>max){ max = arr[x]; } } return max; } }
数组的元素逆序排列:
class ArrayDemo { /** *数组中的元素逆序 */ public static void main(String[] args){ int[] arr = {11,22,33,44,55}; System.out.println("逆序前:"); printArray(arr); System.out.println("逆序后:"); reverse(arr); printArray(arr); } //方法一 public static void reverse(int[] arr){ 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(arr.length-1 == x){ System.out.println(arr[x]+"]"); }else{ System.out.print(arr[x]+","); } } } }
查找数组中值对应的索引
class ArrayDemo { /** *获取数组中值对应的索引 */ public static void main(String[] args){ String[] arr = {"23","45","646","64"}; String value = "45"; int index = getIndex(arr,value); System.out.println("值为"+value+"的索引为:"+index); } //返回数组值对应的索引 public static int getIndex(String[] arr,String value){ int index=-1; for(int x=0;x<arr.length;x++){ if(arr[x] == value){ index = x; break; } } return index; } }
二、二维数组的定义及格式
格式:数据类型[][] 数组名=new 数据类型[m][n];
数组类型[] 数组名[] = new 数据类型[m][n];
数组类型 数组名[][] = new 数据类型[m][n]
class ArrayDemo { //定义一个二维数组 public static void main(String[] args){ int[][] arr = new int[3][2]; System.out.println(arr[0]);//地址值 System.out.println(arr[1]);//地址值 System.out.println(arr[2]);//地址值 System.out.println(arr[0][0]);//0 System.out.println(arr[0][1]);//0 } }
例:
int[][] arr = { {2,4,5,5}, {6,6,64,43} };
class ArrayDemo { /** *遍历二维数组 */ public static void main(String[] args){ int[][] arr = {{1,2,3,3},{4,5,6,7}}; printArray2(arr); } public static void printArray2(int[][] arr){ for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ System.out.print(arr[x][y]+" "); } System.out.println(); } } }
求一个二维数组的和
class ArrayDemo { /** *遍历二维数组 */ public static void main(String[] args){ int[][] arr = {{1,2,3,3},{4,5,6,7}}; printArray2(arr); } public static void printArray2(int[][] arr){ int sum = 0; //初始化一个总数 for(int x=0;x<arr.length;x++){ for(int y=0;y<arr[x].length;y++){ sum += arr[x][y]; //叠加每个值 } } System.out.print(sum); } }
打印杨辉三角
/* 需求:打印杨辉三角形(行数可以键盘录入) 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]+" "); } System.out.println(); } */ //这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似 for(int x=0; x<arr.length; x++) { for(int y=0; y<=x; y++) { System.out.print(arr[x][y]+" "); } System.out.println(); } } }
某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,
在传递过程中需要加密,加密规则如下:
首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,
最后将第一位和最后一位数字交换。 请任意给定一个小于8位的整数,
然后,把加密后的结果在控制台打印出来。
/* 题目要求: A:数据是小于8位的整数 定义一个int类型的数据 int number = 123456; B:加密规则 a:首先将数据倒序 结果 654321 b:然后将每位数字都加上5,再用和除以10的余数代替该数字 结果 109876 c:最后将第一位和最后一位数字交换 结果 609871 C:把加密后的结果输出在控制台 通过简单的分析,我们知道如果我们有办法把这个数据变成数组就好了。 不是直接写成这个样子的: int[] arr = {1,2,3,4,5,6}; 如何把数据转成数组呢? A:定义一个数据 int number = 123456; B:定义一个数组,这个时候问题就来了,数组的长度是多少呢? int[] arr = new int[8]; //不可能超过8 在赋值的时候,我用一个变量记录索引的变化。 定义一个索引值是0 int index = 0; C:获取每一个数据 int ge = number%10 int shi = number/10%10 int bai = number/10/10%10 arr[index] = ge; index++; arr[index] = shi; index++; arr[index] = bai; ... */ import java.util.Scanner; class JiaMiDemo2 { public static void main(String[] args) { //创建键盘录入对象 Scanner sc = new Scanner(System.in); //请输入一个数据 System.out.println("请输入一个数据(小于8位):"); int number = sc.nextInt(); //写功能实现把number进行加密 //调用 String result = jiaMi(number); System.out.println("加密后的结果是:"+result); } /* 需求:写一个功能,把数据number实现加密。 两个明确: 返回值类型:String 做一个字符串的拼接。 参数列表:int number */ public static String jiaMi(int number) { //定义数组 int[] arr = new int[8]; //定义索引 int index = 0; //把number中的数据想办法放到数组中 while(number > 0) { arr[index] = number%10; index++; number /= 10; } //把每个数据加5,然后对10取得余数 for(int x=0; x<index; x++) { arr[x] += 5; arr[x] %= 10; } //把第一位和最后一位交换 int temp = arr[0]; arr[0] = arr[index-1]; arr[index-1] = temp; //把数组的元素拼接成一个字符串返回 //定义一个空内容字符串 String s = ""; for(int x=0; x<index; x++) { s += arr[x]; } return s; } }
面向对象
/* 手机类的测试 */ class Phone { //品牌 String brand; //价格 int price; //颜色 String color; //打电话的方法 public void call(String name) { System.out.println("给"+name+"打电话"); } //发短信的方法 public void sendMessage() { System.out.println("群发短信"); } //玩游戏的方法 public void playGame() { System.out.println("玩游戏"); } } class PhoneDemo { public static void main(String[] args) { //创建手机对象 //类名 对象名 = new 类名(); Phone p = new Phone(); //直接输出成员变量值 System.out.println(p.brand+"---"+p.price+"---"+p.color); //给成员变量赋值 p.brand = "诺基亚"; p.price = 100; p.color = "灰色"; //再次输出 System.out.println(p.brand+"---"+p.price+"---"+p.color); //调用方法 p.call("林青霞"); p.sendMessage(); p.playGame(); } }
获取数组中的最大值,最小值及其对应的下标
/** * 获取数组中的最大值和最小值以及下标 * * @author Administrator * */ public class TestDemo { public static void main(String[] args){ int[] arr={12,34,353,545,46,65,75,76,23,1234}; printArray(arr); System.out.println("数组中最大的值为:"+getMaxValue(arr)+",对应的下标为:"+getMaxIndex(arr)); System.out.println("数组中最小的值为:"+getMinValue(arr)+",对应的小标为:"+getMinIndex(arr)); } /** * 遍历数组 * @param arr */ 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]+","); } } } /** * 获取数组中的最大值 * @param arr * @return */ public static int getMaxValue(int[] arr){ int max = arr[0]; for(int x=0;x<arr.length;x++){ if(max < arr[x]){ max = arr[x]; } } return max; } /** * 获取数组中的最小值 * @param arr * @return */ public static int getMinValue(int[] arr){ int min = arr[0]; for(int x=0;x<arr.length;x++){ if(min>arr[x]){ min = arr[x]; } } return min; } /** * 获取最大值的下标 * @param arr * @return */ public static int getMaxIndex(int[] arr){ int index = 0; for(int x=0;x<arr.length;x++){ if(arr[index] < arr[x]){ index = x; } } return index; } /** * 获取最小值的下标 * @param arr * @return */ public static int getMinIndex(int[] arr){ int index =0; for(int x=0;x<arr.length;x++){ if(arr[index]>arr[x]){ index = x; } } return index; } }