public class jh_01_为什么需要数组 {
public static void main(String[] args) {
int [] arr = new int[5];
// int a = 10;
}
}
import java.util.Scanner;
public class jh_02_如何使用数组 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int [] arr = new int[5];
for (int i= 0; i < arr.length; i++) {
System.out.println("shuru");
arr[i] = sc.nextInt();
}
// arr[0] = 99;
// arr[1] = 98;
// arr[2] = 97;
// arr[3] = 96;
// arr[4] = 95;
// arr = null;//NullPointerException
//System.out.println(arr.length);
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]);
// System.out.println(arr[-5]);//ArrayIndexOutOfBoundsException
System.out.println("*********************");
for(int i = 0;i< 5;i++ ) {
System.out.println(arr[i]);
}
System.out.println("*********************");
for(int i = 0;i< arr.length;i++ ) {
System.out.println(arr[i]);
}
int sum =0;
for(int i = 0;i< arr.length;i++ ) {
sum += arr[i];
}
String [] name= new String[5];
name[0] = "张三";
name[1] = "李四";
name[2] = "张三";
name[3] = "张三";
name[4] = "张三";
System.out.println(name[0]);
System.out.println(name[1]);
System.out.println(name[2]);
System.out.println(name[3]);
System.out.println(name[4]);
System.out.println("********************");
for (int i = 0; i < name.length; i++) {
System.out.println(name[i]);
}
System.out.println("********************");
for (int i = 0; i < 5; i++) {
System.out.println(name[i]);
}
}
}
public class jh_03_数组赋值 {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// int [] arr = new int [5];
// for (int i= 0; i < arr.length; i++) {
// System.out.println("shuru");
// arr[i] = sc.nextInt();
// }
int [] arr03 = new int []{1,2,3,4,5};
int [] arr02 = {1,2,3,4,5};
for (int i = 0; i < arr02.length; i++) {
if(i!=arr02.length-1 ) {
System.out.print(arr02[i]+", ");
}else {
System.out.print(arr02[i]);
}
}
}
}
public class jh_04_现场编程 {
/*
* 有一个数列:8,4,2,1,23,344,12
* 循环输出数列的值
* 求数列中所有数值的和
* 猜数游戏:从键盘中任意输入一个数据,
* 判断数列中是否包含此数
*/
public static void main(String[] args) {
int [] arr={8,4,2,1,23,344,12};
// 循环输出数列的值---迭代. 遍历.
for (int i = 0; i < arr.length; i++) {
System.out.println(i);
}
System.out.println("*******************");
// 求数列中所有数值的和
// 数据类型 元素:
for (int i : arr) {
System.out.println(i);
}
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
System.out.println(sum);
System.out.println("*******************");
int num = 1;
boolean flag = false;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == num) {
flag = true;
break;
}
}
if (flag) {
System.out.println("存在");
} else {
System.out.println("不存在");
}
}
}
public class jh_05_学员操作_显示商品名称2_1 {
// int [] arr={8,4,2,1,23,344,12};
// ''"" ''''gad''
public static void main(String[] args) {
String []arr = {"xiaogege","dajiejie","xiaoayi"};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("**********************");
for (String str : arr) {
System.out.println(str);
}
System.out.println();
double []arr01={1.75,1.73,1.79};
for (int i = 0; i < arr01.length; i++) {
System.out.println(arr01[i]);
}
System.out.println("*********************");
for (double db : arr01) {
System.out.println(db);
}
}
}
import java.util.Scanner;
public class jh_06_学员操作_购物金额结算 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 长度为五的容器,存储金额。double
double []arr = new double[5];
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第"+ i +"个成绩");
arr[i] = sc.nextInt();
}
System.out.println("序号 \t成绩:");
// 罗列输入的数值:
for (int i = 0; i < arr.length; i++) {
System.out.println((1+i)+"\t"+arr[i]);
}
}
}
import java.util.Arrays;
public class jh_07_数组排序2_1 {
public static void main(String[] args) {
// Arrays类的sort()函数: 对数组进行升序排列
// 对象名.函数名()。sc.nextInt();
// 类名.函数名(); Arrays.sort(容器名称);
int [] arr = {2,5,4,3,1,6,9,8,7};
for(int i : arr) {
System.out.print(i+", ");
}
System.out.println();
// Arrays类的sort()函数
Arrays.sort(arr);
for(int i : arr) {
System.out.print(i+", ");
}
System.out.println();
}
}
public class jh_08_求容器最大值 {
public static void main(String[] args) {
/*
* 1:把第一个元素。arr[0]默认成最大的。---参照物。
* 2:后面的元素依次和参照物做比较。
* 3:如果后面的元素比参照物大。就把
* 后面的赋值给参照物。
*/
int [] arr = {2,5,4,3,1,6,9,8,7};
// 1:把第一个元素。默认成最大的
// int max = arr[0];
//
// for (int i = 1; i < arr.length; i++) {
// if(arr[i] > max) {
// // 把当前的元素赋值给max
// max = arr[i];
// }
// }
// System.out.println(max);
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if(arr[i] < min) {
// 把当前的元素赋值给max
min = arr[i];
}
}
System.out.println(min);
}
}
public class jh_09_查找指定元素出现的位置 {
public static void main(String[] args) {
/*
* 查找指定元素出现的位置
* 3 --- index
* 如果不存在。就用-1表示。
*/
int []arr = {2,5,4,3,1,6,9,8,7};
int index = getIndex(arr,19);
System.out.println(index);
// 指定元素
// int num = 19;
// int index = -1;
// // 1:依次取出每一个元素,并做比较
// for (int i = 0; i < arr.length; i++) {
// if(num == arr[i]) {
// index = i;// 当前i的值是不是就是index位置。
// }
// }
// System.out.println(index);
// }
/*
* 1:返回值类型。int
* 2:参数列表。int[] arr,int num
*/
}
public static int getIndex(int [] arr,int num) {
for (int i = 0; i < arr.length; i++) {
if(num == arr[i]) {
return i;
}
}
return - 1;
}
}
import java.util.Scanner;
public class jh_10_学员操作求最低价格 {
private static int i;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int [] arr = new int [4];
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入值: ");
arr[i] = sc.nextInt();
}
int min = arr[0];
for (int i = 1; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println(arr[i]);
}
}
import java.util.Arrays;
import java.util.Scanner;
public class jh_11_插入算法 {
/*
* 有一组学员的成绩{99,85,82,63, 60}, 将它们按升序排列。要增加一个学员的成绩, 将它插入成绩序列,并保持升序。
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 有一组学员的成绩{99,85,82,63, 60},
int[] oldArray = { 99, 85, 82, 63, 60 };
// 将它们按升序排列。
Arrays.sort(oldArray);
// 创建一个容器,长度是原数组长度加1;
int[] newArray = new int[oldArray.length + 1];
// 数组copy 调用对应的函数,或者简单写下。
for (int i = 0; i < oldArray.length; i++) {
newArray[i] = oldArray[i];
}
// 看下效果,迭代新容器
for (int i = 0; i < newArray.length; i++) {
System.out.println(newArray[i]);
}
System.out.println("*************************");
/*
*1: 给出要插入的数值 num
*2: 找到要插入的位置。
*3: 从要插入的位置依次向后挪元素。
*4: 把num的值覆盖到index位置处
*5: 如果插入的值比容器中最大的值还大,应该插入到最后。
* 所以index的初始值默认给newArray.length-1;
*/
// 1:给出要插入的数值 num
System.out.println("给出要插入的数值:");// 77
int num = sc.nextInt();
int index = newArray.length - 1;
// 2:找到要插入的位置
for (int i = 0; i < newArray.length; i++) {
if (newArray[i] > num) {
// 记录当前位置
index = i;
break;
}
}
// 3:从要插入的位置依次向后挪元素。
// arr [8]= arr [7]
// for(int i = index;i<newArray.length;i++) {
倒数第一个 = 倒数第二个
// newArray[newArray.length - 1- 0] = newArray[newArray.length - 1 - 1];
//
//
//
//
// }
for (int i = newArray.length - 1; i > index; i--) {
newArray[i - 0] = newArray[i - 1];
}
// 看效果
for (int i = 0; i < newArray.length; i++) {
System.out.println(newArray[i]);
}
System.out.println("************");
// 4:把num的值覆盖到index位置处
newArray[index] = num;
// 看效果
for (int i = 0; i < newArray.length; i++) {
System.out.println(newArray[i]);
}
}
}
public class jh_12_如何对变量ab的值进行交换 {
public static void main(String[] args) {
int a = 10;
int b = 8;
int temp;
temp = a;
a = b;
b = temp;
System.out.println(a);
System.out.println(b);
}
}
public class jh_13_冒泡排序 {
public static void main(String[] args) {
/*
* 对数组中相邻的两个数进行比较,
* 把数组元素从头到尾比较一次后
* 找到最大的那个值放到数组的末尾.
*/
int[] arr = { 54, 53, 12, 32, 56, 17 };
for (int j = 0; j < arr.length-1; j++) {
for (int i = 0; i < arr.length-1-j; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
}
for (int i : arr) {
System.out.println(i);
}
}
}
public class jh_14_选择排序 {
/*
* int[] arr =
* { 54, 53, 12, 32, 56, 17 };
*/
public static void main(String[] args) {
int[] arr = { 54, 53, 12, 32, 56, 17 };
for (int i = 0; i < arr.length - 1; i++) {
for (int j = arr.length - 1; j > 0; j--) {
if (arr[j] < arr[j - 1]) {
int temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
for (int j : arr) {
System.out.println(j);
}
}
}
import java.util.Arrays;
//import java.util.Scanner;
public class jh_15_二分查找 {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
int[] arr = { 54, 53, 12, 32, 56, 17 };
Arrays.sort(arr);
// 12,17,32,53,54,56
int num = 50;
int startIndex = 0;
int endIndex = arr.length - 1;
for (;;) {
int midIndex = (startIndex + endIndex) / 2;
int midValue = arr[midIndex];
if (num > midValue) {
startIndex = midIndex + 1;
} else if (num < midValue) {
endIndex = midIndex - 1;
} else {
System.out.println("找到了");
break;
}
if (startIndex > endIndex) {
System.out.println("不存在");
break;
}
}
}
}
public class jh_16_二维数组的声明 {
public static void main(String[] args) {
int a;
// int [] arr;
// int arr[];
int [][] intArray;
double doubleArray[][];
String [] strArray[];
}
}
public class jh_17_二维数组的应用场景 {
public static void main(String[] args) {
// 学生成绩表.
int [] arr = new int [3];
int [][] Array = new int[3][3];
// a[0]---
// b[1][2]
// [3]表示b里面有3个一维数组
// 长度。
// {1,2,3,4,5,6};
// {{1},{4,5,6},{7,8}};
int [][] c = new int[3][5];
int [][] d = new int[3][];
d[0] = new int[3];
d[1] = new int[4];
d[2] = new int[5];
// {{1,2,3},{4,5,6,7},{1,1,1,1,1}}
int [][] e = new int [3][3];
e[0][0] = 55;
e[0][1] = 55;
e[0][2] = 55;
e[1][0] = 55;
e[1][1] = 55;
e[1][2] = 55;
e[2][0] = 55;
e[2][1] = 55;
e[2][2] = 55;
for(int i = 0;i<3;i++) {
for(int j=0;j<3;j++) {
System.out.println(e[i][j]);
}
}
System.out.println(e[0][0]);
System.out.println("***************");
for (int[] is : e) {
for(int i :is) {
System.out.println(i);
}
}
}
}
public class jh_18_二维数组的应用二 {
public static void main(String[] args) {
int [] a = {1,2,3,4,5,6};
System.out.println(a.length);
int [][] arr =
{{1,2,3},{4,5,6},{7,8,9}};
//每一个小容器长度。
// 先拿到小容器。arr[i]
// 在取小容器长度。arr[i].length
System.out.println(arr.length);
System.out.println(arr[1].length);
}
}
public class jh_19_循环输出二维数组的内容 {
public static void main(String[] args) {
int[][] arr =
{{1,2,3},{4,5},{7,8,9}};
for(int i = 0;i<arr.length;i++) {
for(int j =0;j<arr[i].length;j++) {
System.out.println(arr[i][j]);
}
}
// for( int [] i :arr) {
// for(int e :i) {
// System.out.println(e);
// }
// }
/*
* 1:先取出大容器里面的每一个小容器。
* 2:再取出每一个小容器里面的元素。
*/
}
}
import java.util.Scanner;
public class jh_20_二维数组编程练习 {
/*
* 在一个二维数组中存放了三名学生的语文和
* 数学的成绩,从键盘输入三名学生的成绩存
* 储到二维数组中,分别求语文和数学的总
* 成绩及平均分并输出。
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
/*
* 任务
* 1、定义一个三行两列的整型二维数组intArray
* 2、从键盘输入学生成绩,要求输入顺序与效果图一致。
* 3、求语文的总成绩和平均分
* 4、求数学的总成绩和平均分
*/
// 1、定义一个三行两列的整型二维数组intArray
int[][] intArray = new int[3][2];
for (int j = 0; j < intArray.length; j++) {
for (int i = 0; i < intArray[j].length; i++) {
if (i == 0) {
System.out.println("请输入第" + (j + 1) + "个学生的语文成绩");
intArray[j][i] = sc.nextInt();
} else {
System.out.println("请输入第" + (j + 1) + "个学生的数学成绩");
intArray[j][i] = sc.nextInt();
}
}
}
for (int[] is : intArray) {
for (int i : is) {
System.out.print(i + ", ");
}
System.out.println();
}
// 求每个学生的总成绩
int chinese = 0;
int math = 0;
for(int i = 0;i<intArray.length;i++) {
int sum = 0;
for(int j = 0;j<intArray[i].length;j++) {
sum += intArray[i][j];
// 判断
// if(j==0) {
// chinese += intArray[i][j];
// }else {
// math += intArray[i][j];
// }
}
System.out.println(sum);
}
System.out.println(chinese);
System.out.println(math);
// intArray[0][0]
// intArray[0][1]
}
}