要求:实现动态的给数组添加元素效果,实现对数组扩容。
public class Test {
public static void main(String[] args) {
//思路分析:
//1. 定义原始数组
int[] arr = {1,2,3};
//2. 定义一个新的数组,大小是arr.length + 1;
int[] arr2 = new int[arr.length + 1];
//3. 遍历arr数组,将arr元素拷贝到arr2数组
//再将4赋值给arr2[arr2.length - 1] = 4;
for(int i = 0; i < arr.length + 1; i++){
if(i < arr.length){
arr2[i] = arr[i];
}
arr2[i] = 4;
}
//4. 把arr2的地址拷贝给arr,完成扩容。
arr = arr2;
}
}
public class Test {
public static void main(String[] args) {
//思路分析:
//1. 创建一个Scanner来接收用户的输入。
//2. 因为用户什么时候退出不确定,使用dowhile + break来控制。
int[] arr = {1,2,3};
import java.util.Scanner;
Scanner myScanner = new Scanner(System.in);
do{
int[] arr2 = new int[arr.length + 1];
//拷贝原始数组。
for(int i = 0; i < arr.length; i++){
arr2[i] = arr[i];
}
System.out.println("请输入你要添加的元素");
int addNum = myScanner.nextInt();
//把addNum赋值给arr2的最后一位数
arr2[arr2.length - 1] = addNum;
arr = arr2;
System.out.println("是否继续添加y/n");
char key = myScanner.next().charAt(0);
if(key == 'n'){
break;
}
}while(true);
System.out.println("您已退出添加...");
}
}
有一个数组 {1, 2, 3, 4, 5}, 可以将该数组进行缩减,提示用户是否继续缩减,每次缩减最后那个元素。当只剩 下最后一个元素,提示,不能再缩减。
public class Test {
public static void main(String[] args) {
//思路分析:跟动态扩容很像,思考。
int[] arr = {1,2,3,4,5};
import java.util.Scanner;
Scanner myScanner = new Scanner(System.in);
//定义一个新的数组。
int[] arr2 = new int[arr.length -1];
do{
for(int i = 0; i < arr2.length; i++){
arr2[i] = arr[i];
}
arr = arr2;
System.out.pritnln("是否继续缩减?y/n");
char answer = myScanner.next().charAt(0);
if(answer = 'n'){
break;
}
}while(true);
}
}
public class BubbleSort {
public static void main(String[] args) {
//化繁为简,先死后活
//1. 先实现第一轮排序。
int[] arr = {24, 69, 80, 57, 13};
int temp = arr[j + 1];//用来辅助交换的变量。
for(int j = 0; j < 4; j++){//4次计较
if(arr[j] > arr[j + 1]){
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
//2. 如何实现第二轮。
//只需要改变j的范围
for(int j = 0; j < 3; j++){//3次计较
if(arr[j] > arr[j + 1]){
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
//3. 用2层循环来实现所有的东西!!!!
int[] arr = {24, 69, 80, 57, 13};
int temp = arr[j + 1];//用来辅助交换的变量。
//加一个外循环.
for(int i = 0; i < arr.length - 1; i++){
for(int j = 0; j < arr.length - 1 - i; j++){//4次计较
if(arr[j] > arr[j + 1]){
temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
}
在 java 中,我们常用的查找有两种:
public class SeqSearch {
public static void main(String[] args) {
//思路:
//1. 定义一个string数组
//2. 接收用户输入,遍历数组,逐一比较。如果有,则提示信息,并推出。
String[] names = {白眉鹰王, 金毛狮王, 紫衫龙王, 青翼蝠王};
import java.util.Scanner;
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入名字");
String findName = myScanner.next();
//这里老韩有一个很厉害的编程思想。
int index = -1;
for(int i = 0; i < names.length; i++){
//string的比较要用equals
if(findName.equals(names[i])){
System.out.println("恭喜你找到了" + findName);
System.out.println("下标为 = " + i);
index = i
break; //找到就退出。
}
}
//如果循环结束后index = -1,证明一直都没有找到。
if(index == -1){
System.out.println("不好意思,没找到" + findName);
}
}
}
public class SeqSearch {
public static void main(String[] args) {
//
int arr = {1,8, 10, 89, 1000, 1234};
import java.util.Scanner;
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入数字");
int findNum = myScanner.nextInt();
int index = -1;//用来辅助确定,每一个index都没有找到一样的。
for(int i = 0; i < arr.length; i++){
if(findNum == arr[i]){
System.out.println("找到" + findNum);
System.out.println("下标为" + i);
}
}
if(index == -1){
System.out.println("不好意思没有找到" + findNum);
}
}
}