直接上代码(带注释版):
增:
public class Add {
static String[] names={"菲菲","小呆呆","波比","超人强","猪猪侠",null,null,null};
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("请输入要添加的名字:");
String name=input.next();
System.out.println("请输入要添加的位置");
int newIndex = input.nextInt();
//判断是否有空位置
//找到第一个空位置的下角标
int index=-1;
for(int i=0;i<names.length;i++){
if (names[i]==null){
index=i;
break;
}
}
//没有空位置时
if(index==-1){
String[] newNames = new String[2*names.length] ;//声明一个两倍原数组长度的新数组
setNewNames(newNames,names);//转存数据
//添加
addName(newNames,newIndex,name);
System.out.println(Arrays.toString(newNames));
}else {
//有空位时
addName(names,newIndex, name);
System.out.println(Arrays.toString(names));
}
}
public static void addName(String[] arrs,int index,String name){
int lastindex=-1;
for(int i=index;i<arrs.length;i++){//有空位置时,index是最后一个空位的下角标;没有空位时,index=-1
if(arrs[i]==null){
lastindex=i-1;
break;
}
}
//移动元素
for(int i=lastindex;i>=index;i--){
arrs[i+1]=arrs[i];
}
//添加元素
arrs[index]=name;
}
public static void setNewNames(String[] newNames,String[] names){
//把旧数组的所有元素转存到新数组
for (int i = 0; i <names.length;i++) {
newNames[i] = names[i];
}
}
}
删:
public class Del {
// 定义一个静态字符串数组,包含一些初始名称和空位
static String[] names={"菲菲","小呆呆","波比","超人强","猪猪侠",null,null,null};
// 创建Scanner对象用于接收用户输入
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
// 提示用户输入要添加的名字
System.out.println("请输入要添加的名字:");
String name=input.next();
// 提示用户输入要添加的位置(索引)
System.out.println("请输入要添加的位置");
int newIndex = input.nextInt();
// 查找数组中第一个空位置(null)的索引
int index=-1; // 初始化为-1,表示没有找到空位
for(int i=0;i<names.length;i++){
if (names[i]==null){
index=i;
break; // 找到第一个空位后立即退出循环
}
}
// 判断是否有空位置
if(index==-1){
// 没有空位置时,创建一个两倍大小的新数组
String[] newNames = new String[2*names.length];
// 将旧数组数据复制到新数组
setNewNames(newNames,names);
// 在新数组中添加名字
addName(newNames,newIndex,name);
// 打印新数组
System.out.println(Arrays.toString(newNames));
}else {
// 有空位时,直接在原数组中添加名字
addName(names,newIndex, name);
// 打印原数组
System.out.println(Arrays.toString(names));
}
}
/**
* 在指定位置添加名字,并移动后面的元素
* @param arrs 目标数组
* @param index 要插入的位置
* @param name 要插入的名字
*/
public static void addName(String[] arrs,int index,String name){
// 查找从指定位置开始的第一个空位的索引
int lastindex=-1;
for(int i=index;i<arrs.length;i++){
if(arrs[i]==null){
lastindex=i-1; // 找到空位前一个位置
break;
}
}
// 从后向前移动元素,为插入新名字腾出空间
for(int i=lastindex;i>=index;i--){
arrs[i+1]=arrs[i];
}
// 在指定位置插入新名字
arrs[index]=name;
}
/**
* 将旧数组的内容复制到新数组
* @param newNames 目标数组(新数组)
* @param names 源数组(旧数组)
*/
public static void setNewNames(String[] newNames,String[] names){
// 遍历旧数组,将元素复制到新数组
for (int i = 0; i <names.length;i++) {
newNames[i] = names[i];
}
}
}
改:
public class Change {
static String[] names={"菲菲","小呆呆","波比","超人强","猪猪侠",null,null,null};
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("请输入要修改的原名字:");
String oldName= input.next();
System.out.println("请输入修改后的名字");
String newName = input.next();
boolean boo=false;
int index=-1;
for (int i = 0; i < names.length; i++) {
if (names[i]!=null&& names[i].equals(oldName)){
boo=true;
index=i;
break;
}
}
if(boo){
names[index]=newName;
System.out.println("修改成功");
System.out.println(oldName+"成功改为"+names[index]);
}else {
System.out.println("修改失败,不存在此人");
}
System.out.println(Arrays.toString(names));
}
}
查:
public class Selsct {
static String[] names = {"菲菲", "小呆呆", "波比", "超人强", "猪猪侠", null, null, null};
public static void main(String[] args) {
System.out.println("请输入你要查找的名字:");
String name = new Scanner(System.in).next();
boolean boo=false;
for (int i = 0; i < names.length; i++) {
if (names[i] != null && names[i].equals(name)) {
boo = true;
}
}
if (boo) {
System.out.println("存在");
} else {
System.out.println("不存在");
}
}
}
Java第三天:增删改查学习之痛

被折叠的 条评论
为什么被折叠?



