java.util.NoSuchElementException at java.util.Scanner.next

/*使用Java语言编程实现对学生-课程数据库的访问,使用者可以进行创建、插入、查询、删除和更新等操作。*/importjava.util.Scanner;importj... /*使用Java语言编程实现对学生-课程数据库的访问,使用者可以进行创建、插入、查询、删除和更新等操作。*/

import java.util.Scanner;
import java.sql.*;
public static void select(String table,Connection con) throws Exception //查询语句,输入参数为表、当前连接以及预编译语句的对象
{
//select函数单独运行没有问题
}

public static void insert(String table,Connection con)throws Exception//插入语句,使用占位符?来实现
{
select(table,con);
String s0="select * from "+table;
PreparedStatement prepStmt=con.prepareStatement(s0);
ResultSet rs=prepStmt.executeQuery();
int col=rs.getMetaData().getColumnCount();//获取表的字段个数
int cc=col;
String s1="insert into "+table+" values(?";
while(cc-->1)s1=s1+",?";
s1=s1+");";

prepStmt = con.prepareStatement(s1);
Scanner scan=new Scanner(System.in);

System.out.println("按顺序输入"+col+"个数据:");
for(cc=1;cc<=col;cc++)prepStmt.setString(cc,scan.next());
prepStmt.executeUpdate();
System.out.println("插入成功!");
System.out.println("————————————————————————————————————————");
select(table,con);
scan.close();
prepStmt.close();
}

public static void main(String args[])
{
try
{

boolean flag=true;

while(flag)
{
System.out.println("4.往表中插入一条数据");
String table,name,type,zd;
Scanner scan = new Scanner(System.in);//第二次运行到这儿就报错
String n = scan.next();
switch(n)
{
case("4"):
System.out.println("输入要插入数据的表:");
table=scan.next();
insert(table,con);
break;

}
因为字数限制被我删去了很多,将就看一下重点问题部分:
首先,我要说明,程序本身运行没问题,在我加上最后一部分while(flag)之后就出现问题了,报错为题目上面的
然后程序实现的功能中,插删改几个(只要有select)函数的都报错;报错还很奇怪的,while第一次循环可以运行,第二次运行至上面标记那里就报错,为啥呢。。
展开
 我来答
匿名用户
2014-12-04
展开全部
首先switch(n)这里的switch()这里必须传int类型的数字吧,我执行了一下你的代码,除了while循环没有结束以外,要把switch(n)这里的n的类型转成int之后,感觉没有你所说的错误。
追问
整一段代码贴不上来。。switch那里好像没有问题,我也试过int的类型之后,那个问题没有解决。。
追答
我也刚刚找到问题。
insert(table,con,scan);我改成的是把Scanner scan当成参数传入insert方法,然后把insert方法里面关于Scanner scan都删除就0k了。(*^__^*) 嘻嘻……
VIP独家赞赞赞
2014-12-04
知道答主
回答量:8
采纳率:0%
帮助的人:5.5万
展开全部
while(flag)死循环了,
追问
呃,这个是一部分而已,flag 在default那里会执行flag=false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式