目录
前言:本笔记是零散笔记
一、数组
数组下标必须是在指定范围内使用,否则报ArrayIndexOutOfBoundsException(数组索引越界异常)
数组练习:
注意强制类型转换的写法,需要把char用括号括起来
public class Test {
public static void main(String[] args) {
char[] chars = new char[26];
chars[0] = 'A';
for (int i = 0; i < chars.length; i++) {
System.out.println((char)(chars[0]+i));
}
}
}
数组翻转:
1.通过一个临时变量分别对数组中对称的元素进行互换,如此循环,完成翻转
public class Test {
public static void main(String[] args) {
int[] ints = {1,535,23,889,123,435,0,-1,9};
int length = ints.length;;
int temp;
for (int i = 0; i < length/2; i++) {
temp = ints[i];
ints[i] = ints[length-i-1];
ints[length-i-1] = temp;
}
for (int i = 0; i < length; i++) {
System.out.println(ints[i]);
}
}
}
2.通过逆序赋值的方式翻转(需要新建一个空数组,增加了空间复杂度)
public class Test {
public static void main(String[] args) {
int[] ints = {1,535,23,889,123,435,0,-1,9};
int len = ints.length;
int[] ints1 = new int[len];
for (int i = 0; i < len; i++) {
ints1[i] = ints[len-1-i];
}
ints=ints1;
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
public class Test {
public static void main(String[] args) {
int[] ints = {1,535,23,889,123,435,0,-1,9};
int len = ints.length;
int[] ints1 = new int[len];
for (int i = len-1,j=0; i >0 ; i--,j++) {
ints1[j] = ints[i];
}
ints=ints1;
for (int i = 0; i < len; i++) {
System.out.println(ints[i]);
}
}
}
数组添加:
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//注意要把第10行代码移到do while循环的前面
int[] arr = {1, 2, 3};
do {
int[] arr1 = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
arr1[arr.length] = scanner.nextInt();
arr = arr1;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println("是否继续输入 y/n");
char c = scanner.next().charAt(0);
if (c == 'n') {
break;
}
} while (true);
System.out.println("添加完成");
}
}
排序
1、冒泡排序的思路
2、冒泡排序的代码
public class Test {
public static void main(String[] args) {
int[] arr = {24, 69, 80, 57, 13, -1, 30, 200, -100};
int temp;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
System.out.println("\n第+" + (i + 1) + "+轮循环");
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j] + "\t");
}
}
}
}
杨辉三角
代码:
public class Test {
public static void main(String[] args) {
int[][] arr = new int[5][];
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1];
for (int j = 0; j < arr[i].length; j++) {
if(j==0|j==arr[i].length-1){
arr[i][j] = 1;
}else {
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
}
}
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
二、本章作业
思路一:先扩容,再冒泡排序,代码如下
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int nextInt = sc.nextInt();
int[] arr = {10, 12, 45, 90};
int[] arr1 = new int[arr.length + 1];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
arr1[arr.length] = nextInt;
arr = arr1;
int temp;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
思路二:先找出添加的数字在数组中的索引,再遍历
//遍历部分自己写的代码
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int nextInt = sc.nextInt();
int[] arr = {10, 12, 45, 90};
int[] arr1 = new int[arr.length + 1];
int index = -1;
for (int i = 0; i < arr.length; i++) {
if(nextInt<=arr[i]){
index = i;
break;
}
}
if(index==-1){
index = arr.length;
}
for (int i = 0; i < arr1.length; i++) {
if(i<index){
arr1[i] = arr[i];
}else if(i==index){
arr1[i] = nextInt;
}else {
arr1[i] = arr[i-1];
}
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
}
}
//老韩视频中的代码
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int nextInt = sc.nextInt();
int[] arr = {10, 12, 45, 90};
int[] arr1 = new int[arr.length + 1];
int index = -1;
for (int i = 0; i < arr.length; i++) {
if(nextInt<=arr[i]){
index = i;
break;
}
}
if(index==-1){
index = arr.length;
}
for (int i = 0,j=0; i < arr1.length; i++) {
if(i!=index){
arr1[i] = arr[j];
j++;
}else {
arr1[i] = nextInt;
}
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i]+" ");
}
}
}
完!