hallo~~ 2020-09-24 22:27 采纳率: 0%
浏览 80

java中报错原因 急求 谢谢

图片说明

import java.io.*;
import java.util.*;

class Course
{
    String name,type,teacher;
    int period;
    double credit;
    Course(){};
    Course(String name,String type,String teacher,int period,double credit)
    {
        this.name=name;
        this.type=type;
        this.teacher=teacher;
        this.period=period;
        this.credit=credit;
    }
    void Print()
    {
        System.out.println(name+"    "+type+"    "+teacher+"    "+period+"    "+credit);
    }
}
class Courses
{
    Course[] c= new Course[100];
    Scanner sc1=new Scanner(System.in);
    Courses() 
    {
        c[0]=new Course("高数","是","张三",72,4);
        c[1]=new Course("大物","是","李四",72,5.5);
    };
    void addelement() throws IOException
    {
        int n=0;
        while(c[n]!=null)
        {
            n++;
        }
        System.out.println("请输入课程名称:");
        String na = sc1.next();
        System.out.println("请输入是否为必修课:");
        String ty = sc1.next();
        System.out.println("请输入授课老师:");
        String te = sc1.next();
        System.out.println("请输入学时:");
        int pe = sc1.nextInt();
        System.out.println("请输入学分:");
        double cr = sc1.nextDouble();
        sc1.close();
        if(Find(na,ty,te)==-1)
        {
            c[n]=new Course(na,ty,te,pe,cr);
            System.out.println("添加成功!");
        }
        else
        {
            System.out.println("该课程已存在,添加失败!");
        }
    }
    int Find(String na,String ty,String te)
    {
        int n=0;
        while(c[n]!=null)
        {
            if((c[n].name.equals(na))&&(c[n].type.equals(ty))&&(c[n].teacher.equals(te)))
            {
                return n;
            }
            n++;
        }
        return -1;
    }
    int Finds(String na)
    {
        int n=0;
        while(c[n]!=null)
        {
            if(c[n].name.equals(na))
            {
                return n;
            }
            n++;
        }
        return -1;
    }
    void Modify(int n) throws IOException
    {
        System.out.println("请输入修改后的数据:");
        System.out.println("请输入课程名称:");
        String na = sc1.next();
        System.out.println("请输入是否为必修课:");
        String ty = sc1.next();
        System.out.println("请输入授课老师:");
        String te = sc1.next();
        System.out.println("请输入学时:");
        int pe = sc1.nextInt();
        System.out.println("请输入学分:");
        double cr = sc1.nextDouble();
        if(Find(na,ty,te)==-1)
        {
            Course a=new Course(na,ty,te,pe,cr);
            c[n]=a;
            System.out.println("修改成功!");
        }
        else
        {
            System.out.println("该课程已存在,修改失败!");
        }
    }
    void Print(int n)
    {
        c[n].Print();
    }
    void Display()
    {
        int n=0;
        while(c[n]!=null)
        {
            c[n].Print();
            n++;
        }
    }
}
public class CYX0922_1 {
    public static void main(String arg[]) throws IOException
    {
        int n=1,t,x;
        Scanner sc2=new Scanner(System.in);
        Courses c=new Courses();
        while(n==1)
        {
            System.out.println();
            System.out.println("课程名    是否为必修课    授课老师    学时    学分");
            System.out.println("1-添加课程  2-查询课程  3-删除课程  4-修改课程  5-显示全部课程信息  0-退出系统");
            System.out.print("请选择要使用的功能序号:");
            x=sc2.nextInt();
            switch(x)
            {
            case 1:c.addelement();
                   break;
            case 2:System.out.println("请输入课程名称:");
                   String name = sc2.next();
                   System.out.println("请输入是否为必修课:");
                   String type = sc2.next();
                   System.out.println("请输入授课老师:");
                   String teacher = sc2.next();
                   t=c.Find(name,type,teacher);
                   if(t==-1)
                   {
                       System.out.println("该课程不存在!");
                       break;
                   }
                   else
                   {
                       System.out.println("该课程存在!");
                       c.Print(t);
                       break;
                   }
            case 3:System.out.println("请输入课程的课程名(以回车结束):");
                   name=sc2.next();
                   t=c.Finds(name);
                   if(t==-1)
                   {
                       System.out.println("该课程不存在,删除失败!");
                       break;
                   }
                   else
                   {
                       c.Print(t);
                       System.out.println("删除成功!");
                       break;
                   }
            case 4:System.out.println("请输入课程的课程名(以回车结束):");
                   name=sc2.next();
                   t=c.Finds(name);
                   if(t==-1)
                   {
                       System.out.println("该课程不存在!");
                       break;
                   }
                   else
                   {
                       c.Modify(t);
                       break;
                   }
            case 5:c.Display();
                   break;
            case 0:System.out.println("已退出系统!");
                   n=0;
                   break;
            default:System.out.println("输入错误!");
                    break;
            }
        }
        sc2.close();
    }
}

运行后选择功能1,输入数据后会出现错误如下

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-09-24 23:03
    关注
    System.out.println("请输入课程名称:");
    String na = sc1.next();
    System.out.println("请输入是否为必修课:");
    String ty = sc1.next();
    System.out.println("请输入授课老师:");
    String te = sc1.next();
    这些next都修改为nextLine();
    每次输入1行。
    因为你输入的结尾存在回车
    导致下面的nextInt nextDouble没有办法读取到,故出错
    
    评论

报告相同问题?

悬赏问题

  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示