java-数组,排序 数组动态初始化 数组的常见问题 二维数组及遍历 一维数组存放二维数组 数组的大量案例19
package com.demo.data;
public class arr {
public static void main(String[] args) {
int[] arr = {11, 22, 33, 44,999};
int max = m(arr);
System.out.println("最大值"+max);
}
public static int m(int[] arr) {
// 数组的数据格式
// 1完整格式
// 数据类型[] 名字 = new 数据类型[]{元素1,元素2....}
// 2缩写
// 数据类型[] 名字 = {元素1,元素2....}
double[] arr2 = {11, 22, 33, 44};
//打印结果是数组的十六进制内存地址
//@分隔符,[表示是数组类型,I表示是int类型
System.out.println(arr);//[I@5fd0d5ae
System.out.println(arr2);//[D@2d98a335
// 打印第一个索引的数组
System.out.println(arr[0]);
for (int i = 1; i <= arr[0]; i++) {
System.out.println("数组循环" + i);
}
// 按数组的索引遍历
for (int i = 1; i <= arr.length; i++) {
System.out.println("数组遍历" + i);
}
// 计算最大值
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
}
案例
package com.demo.data; public class arr2 { public static void main(String[] args) { int[] arr = {100, 50, 20, 90, 90}; int max = arr1(arr); System.out.println("最高分:" + max); int min = arr2(arr); System.out.println("最低分:" + min); int gentle = getSum(arr); System.out.println("总分:" + gentle); double avg = averAge(arr); System.out.println("平均分:" + avg); int statistics = statistics(arr); System.out.println("统计多余平均值的个数:" + statistics); int overtop = overtop(arr); System.out.println("统计高余平均值的个数:" + overtop); } // 最高分 public static int arr1(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 arr2(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 getSum(int[] arr) { int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } return sum; } // 平均分 public static double averAge(int[] arr) { int sum = getSum(arr); double avg = (sum * 1.0) / arr.length; return avg; } // 统计低余平均值的个数 public static int statistics(int[] arr) { // 定义计时器 int count = 0; double avg = averAge(arr); for (int i = 0; i<arr.length;i++){ if (arr[i]<avg){ count ++; } } return count; } // 统计高余平均值的个数 public static int overtop(int[] arr) { // 定义计时器 int count = 0; double avg = averAge(arr); for (int i = 0; i<arr.length;i++){ if (arr[i]>avg){ count ++; } } return count; } }
package com.demo.data; public class arr4 { public static void main(String[] args) { // int类型的初始值 int arr[] = new int[3]; for (int i = 0;i<arr.length;i++){ System.out.println(arr[i]);//0 } // double类型的初始值 double ar2[] = new double[3]; for (int i = 0;i<ar2.length;i++){ System.out.println(ar2[i]);//0.0 } // boolean类型的初始值 boolean ar3[] = new boolean[3]; for (int i = 0;i<ar3.length;i++){ System.out.println(ar3[i]);//false } // String类型的初始值 String ar4[] = new String[3]; for (int i = 0;i<ar4.length;i++){ System.out.println(ar4[i]);//null } // char类型的初始值 char ar5[] = new char[3]; for (int i = 0;i<ar5.length;i++){ System.out.println(ar5[i]);// ' '空白字符 } } }
方法的传递问题:
数组的常见问题:
1.索引越界异常:
package com.demo; public class unusual { public static void main(String[] args) { int arr[] ={33,222,444}; System.out.println(arr[10]);//ArrayIndexOutOfBoundsException } }
2.空指针异常:
package com.demo; public class unusual { public static void main(String[] args) { int arr[] ={33,222,444}; arr = null; System.out.println(arr[10]);//NullPointerException } }
二维数组的遍历:
package com.demo.data; public class arr6 { public static void main(String[] args) { int arr[][] = { {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, }; tow(arr); int data = one(arr); System.out.println(data); } //二维数组需要遍历到一维数组,再遍历里面的内容 private static void tow(int arr[][]) { // 遍历二维数组获取一维数组 for (int i = 0; i < arr.length; i++) { // arr[i]就是一维数组 // 继续遍历一维数组,获取元素 for (int j = 0; j < arr[i].length; j++) { System.out.println(arr[i][j]); } } System.out.println(arr[0]); } // 二维数组求和 private static int one(int arr[][]) { int data = 0; // 遍历二维数组获取一维数组 for (int i = 0; i < arr.length; i++) { // arr[i]就是一维数组 // 继续遍历一维数组,获取元素 for (int j = 0; j < arr[i].length; j++) { data += arr[i][j]; } } return data; } }
逢七过案例:
package com.demo.data; public class arr7 { public static void main(String[] args) { seven(); } // 逢七过 private static void seven() { for (int i = 1; i <= 100; i++) { int ge = i %10; int shi = i /10%10; if (ge ==7 || shi ==7||i%7 ==0){ System.out.println("过"); }else { System.out.println(i); } } } }
数组求和:
package com.demo.data; public class arr8 { public static void main(String[] args) { int arr[] ={68,27,95,88,171,996,51,210}; int sum = 0 ; for (int i = 0; i <arr.length ; i++) { int ge = i/10; int shi = i/10%10; if (ge /7==0&&shi/7==0&&arr[i]%2==0){ sum += arr[i]; } } System.out.println(sum); } }
比较两个数组是否完全相同:
package com.demo.data;
public class arr9 {
public static void main(String[] args) {
boolean arr = arr();
System.out.println(arr);
}
// 比较两个数组是否相等
private static boolean arr() {
int arr[] = {11,22,33};
int arr2[] ={11,22,22};
// 1,判断两个的长度是否相等
if (arr.length != arr2.length){
return false;
}
// 2.遍历数组
for (int i = 0; i < arr.length; i++) {
// 3.判断数组内容是否相等
if (arr[i]!=arr2[i]){
return false;
}
}
return true;
}
}
键盘录入一个值,并且在数组比对,有则返回其下标值,有重复值时,返回一个数组:
键盘录入一个值,并且在数组比对,有则返回其下标值:
package com.demo.data; import java.util.Scanner; public class arr10 { public static void main(String[] args) { // 1定义数组 int arr[] = {11,855,6,6,6,6,2163,33,131,}; // 9.定义Scanner方法 Scanner sc = new Scanner(System.in); // 10.定义键盘录入 int num = sc.nextInt(); // 11.调用方法,并且赋与新值 int index =Index(num,arr); // 12.打印是否正确 System.out.println(index); } // 2.创建方法 public static int Index(int num,int arr[]) { // 3定义index -1 int index = -1; // 4遍历循环 for (int i = 0; i < arr.length; i++) { // 5.判断数组里面是否有该元素 if (arr[i] == num){ // 6.有则将下标重新赋予index index = i; // 7.找到正确下标后,结束循环遍历 break; } } // 8.return数值出去 return index; } }
键盘录入一个值,并且在数组比对,有则返回其下标值,有重复值时,返回一个数组:
package com.demo.data;
public class arr12 {
public static void main(String[] args) {
int arr[] = {11, 855, 6, 6, 6, 6, 2163, 33, 131,};
int Index[] = Index(6, arr);
if (Index.length == 0) {
System.out.println("您查找的元素不存在");
} else {
for (int i = 0; i < Index.length; i++) {
System.out.println(Index[i]);
}
}
}
// 键盘录入一个值,并且在数组比对,有则返回其下标值,有重复值时,返回一个数组:
private static int[] Index(int num, int[] arr) {
// 1.统计一个值出来,方便后面设置数组的长度
int count = 0;
// 2.遍历统计重复次数
for (int i = 0; i < arr.length; i++) {
if (arr[i]==num){
count++;
}
}
// 3.new一个新数组,数组里存放刚刚的统计值,设置数组长度
int res[] = new int[count];
// 4.设置下标为0
int index = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]==num){
// 5.如果有重复的,将下标赋值给res这个数组存储起来
res[index] = i;
index++;
}
}
return res;
}
}
数据交换:
package com.demo.data; public class arr13 { public static void main(String[] args) { int arr[] = {11,22,33,44,55,66}; int temp = arr[0]; arr [0] = arr[5]; arr[5] = temp; for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } } }
去掉最高分和最低分,求剩下的平均分
package com.demo.data;
import java.util.Scanner;
public class arr14 {
public static void main(String[] args) {
int[] arr = intData();
int num = num(arr);
int max = max(arr);
int min = min(arr);
avg(arr, num, max, min);
}
private static void avg(int[] arr, int num, int max, int min) {
System.out.println("总分" + num);
System.out.println("最高分" + max);
System.out.println("最低分" + min);
double avg = ((num - max - min) * 1.0) / (arr.length - 2);
System.out.println("平均分" + avg);
}
private static int min(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
private static int max(int[] arr) {
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
private static int num(int[] arr) {
int num = 0;
for (int i = 0; i < arr.length; i++) {
num += arr[i];
}
return num;
}
private static int[] intData() {
int arr[] = new int[6];
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数");
for (int i = 0; i < arr.length; i++) {
System.out.println("请第" + (i + 1) + "位评委打分");
int score = sc.nextInt();
if (score>=0 && score <100){
arr [i] = score;
}else {
System.out.println("您的输入有误");
}
}
return arr;
}
}
随机生成验证码:
package com.demo.data;
import java.util.Random;
import java.util.Scanner;
public class arr15 {
public static void main(String[] args) {
// BAIDU();
char[] verify = randomNumber();
Random r = new Random();
String code = "";
for (int i = 0; i <= 5; i++) {
int index = r.nextInt(verify.length);
code += verify[index];
}
System.out.println("生成的验证码为----" + code);
System.out.println("请输入验证码");
Scanner sc = new Scanner(System.in);
String checlCode = sc.next();
if (checlCode.equalsIgnoreCase(code)) {
System.out.println("验证成功");
} else {
System.out.println("验证失败");
}
}
// 1.定义随机数
private static char[] randomNumber() {
// 打印字符char时,不会看到地址值,直接看到内容
char verify[] = new char[26 + 26 + 10];
int index = 0;
for (char c = 'a'; c <= 'z'; c++) {
verify[index] += c;
index++;
}
for (char c = 'A'; c <= 'Z'; c++) {
verify[index] += c;
index++;
}
for (char c = '0'; c <= '9'; c++) {
verify[index] += c;
index++;
}
return verify;
}
//-----------------------------------
// 百度方法,不推荐,用上面的好一点
// 方法一
private static void BAIDU() {
//定义一个随机生成数技术,用来生成随机数
Random yzm = new Random();
//定义一个String变量存放需要的数据,一共58位
String yzm1 = "1234567890abcdefghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ";
//定义一个空的Atring变量用来接收生成的验证码
String yzm3 = "";
for (int i = 0; i < 5; i++) {
//随机生成0-57之间的数,提供索引位置
int a = yzm.nextInt(yzm1.length());
//用get 和提供的索引找到相应位置的数据给变量
yzm3 += yzm1.charAt(a);
}
System.out.println("用String常用API-charAit生成的验证码为:" + yzm3);
}
}
代码改变了我们,也改变了世界