luoyebinfen_ 2022-07-14 15:57 采纳率: 50%
浏览 43
已结题

java代码问题,我照例子写的,输出结果出问题了,看一下。

  问题遇到的现象和发生背景

 问题相关代码,请勿粘贴截图package com.unit4.test;

import java.util.Scanner;

public class test2 {
static String[] shuming = {"java教程","py入门","c语言","c++"};
static String[] yonhu = {"张三","李四","王二","麻子"};
static int[] kjzt = {1,1,2,2 };// 1可借,2,不可借
static int[] jccs = {10,20,35,45 };// 累计借出次数

static Scanner str = new Scanner(System.in);

//删除图书
public static void shanchubook() {
System.out.println("请输入书名:");
String name=str.next();
int index=0;
int msg=1;
for(int i=0;i<shuming.length;i++) {
if (shuming[i].equals(name)) {
index=i;
msg=2;
}
}
if (msg==2) {
String[]shuming2=new String[shuming.length-1];
String[]yonhu2=new String[shuming.length-1];
int[]kjzt2=new int[shuming.length-1];
int[]jccs2=new int[shuming.length-1];

         for(int i=0;i<shuming2.length;i++) {
             if (i<index) {
                 shuming2[i] =shuming[i];
                      yonhu2[i]=yonhu[i];
                      kjzt2[i]=kjzt[i];
                      jccs2[i]=jccs[i];
            }else if(i>=index){
                shuming2[i]=shuming[i+1];
                  yonhu2[i]=yonhu[i+1];
                  kjzt2[i]=kjzt[i+1];
                  jccs2[i]=jccs[i+1];
            }
             
         }
         System.out.println("删除成功!");
         xianshibooks(shuming2,yonhu2,kjzt2,jccs2);
    }else {
        System.out.println("图书不存在!");
    }
}



//增加图书    
public static void zengJiabook(){
    if (shuming.length>=6) {
        System.out.println("书架已满!");
    }else {
        System.out.println("请输入书名:");
        String xuanzhe1=str.next();
        System.out.println("请输入作者:");
        String xuanzhe2=str.next();
        int msg=1;
        for(String x:shuming) {
            if (x.equals(xuanzhe1)) {
            msg=2;
            }
        }
        if (msg==1) {
             String[]shuming2=new String[shuming.length+1];
             String[]yonhu2=new String[shuming.length+1];
             int[]kjzt2=new int[shuming.length+1];
             int[]jccs2=new int[shuming.length+1];
               for(int i=0;i<shuming.length;i++) {
                  shuming2[i] =shuming[i];
                  yonhu2[i]=yonhu[i];
                  kjzt2[i]=kjzt[i];
                  jccs2[i]=jccs[i];
               }
              shuming2[shuming.length-1] =xuanzhe1;
              yonhu2[shuming.length-1]=xuanzhe2;
              kjzt2[shuming.length-1]=1;
              jccs2[shuming.length-1]=0;
              System.out.println("你添加图书是:"+xuanzhe1);
              xianshibooks(shuming2,yonhu2,kjzt2,jccs2);
        }else { 
            System.out.println("此书名已存在!");
        }
    }
}




 //显示所有图书
    public static void  xianshibooks(String[] a,String[] b,int[] c,int[] d) {
        System.out.println("书名,作者,状态,借出次数");
        for(int i=0;i<shuming .length;i++) {
            String s="不可借";
            if (c[i]==1) {
                s="可借";
          }
             System.out.println(a[i]+", "+b[i]+","+s+","+d[i] );
        }
    } 
// 登入
public static String dengru() {
    String uyhm = "aaa";
    String umima = "123";

    String msg = "失败";
    System.out.println("请输入用户名");
    String yhm = str.next();
    System.out.println("请输入密码");
    String mima = str.next();
    if (yhm.equals(uyhm) && mima.equals(umima)) {
        msg = "成功";

    }
    return msg;

}

// 显示主菜单
public static void zhucaidan() {
    System.out.println("欢迎来到图书管理系统!");
    System.out.println("主菜单");
    System.out.println("1,查看所有图书");
    System.out.println("2,增加图书");
    System.out.println("3,删除图书");
    System.out.println("4,借出图书");
    System.out.println("5,归还图书");
    System.out.println("6,退出");
    System.out.println("请选择菜单编号:");
}



public static void main(String[] args) {
    while (1==1) {
        String msg = dengru();
        if ("失败".equals(msg)) {
            System.out.println("登入失败,请重新登入");
            continue;
        } else if ("成功".equals(msg)) {
            while (1==1) {
                zhucaidan();
                 int xuanzhe1=str.nextInt();
                 if (xuanzhe1==1) {
                     xianshibooks(shuming,yonhu,kjzt,jccs);
                    
                }else if (xuanzhe1==2) {
                    zengJiabook();
                }else if (xuanzhe1==3) {
                    shanchubook();
                }else if (xuanzhe1==4) {
                    
                }else if (xuanzhe1==5) {
                    
                }else if (xuanzhe1==6) {
                    
                }
                
            }

        }
    }
}

}

 运行结果及报错内容
请输入用户名

请输入密码
123
欢迎来到图书管理系统!
主菜单
1,查看所有图书
2,增加图书
3,删除图书
4,借出图书
5,归还图书
6,退出
请选择菜单编号:
3
请输入书名:
c语言
删除成功!
,书名,作者,状态,借出,次数
java教程, 张三,可借,10
py入门, 李四,可借,20
c++, 麻子,不可借,45
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at com.unit4.test.test2.xianshibooks(test2.java:99)
at com.unit4.test.test2.shanchubook(test2.java:45)
at com.unit4.test.test2.main(test2.java:154)
我的解答思路和尝试过的 我想要达到的结果

  • 写回答

3条回答 默认 最新

  • it_hao528 2022-07-14 16:40
    关注

    删除之后显示所有图书的方法里边for循环数组越界了
    应该是for(int i = 0; i < a.length; i++),如下图

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 已采纳回答 7月14日
  • 创建了问题 7月14日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。