| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:求教?random类的一个无法解释的问题
只看楼主 加入收藏
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
 问题点数:0 回复次数:15 
求教?random类的一个无法解释的问题

我用JSP+Acess数据库做一个在线考试系统,程序源代码如下:
<%@ page language="java" contentType="text/html; charset=GB2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.lang.*"%>
<jsp:useBean id="wu" class="duo.exam" scope="session"/>
<html>
<head>
<title>考试正在进行之中</title>
</head>
<body>
<p align=center>考号为:<%=session.getAttribute("S_id")%>的<%=session.getAttribute("S_name")%>同学您正在考试之中,请专心作答</p>
<table width="80%" border=1 bordercolor="#ff00ff" cellspacing=1 align="center">
<%
try{
int Max=0;
String sql="select max(id) from tiku ";
ResultSet rs0=wu.executeQuery(sql);
while(rs0.next())
{ Max=rs0.getInt(1);}
Random random=new Random();
for(int j=1;j<=5;j++)
{
int i=random.nextInt(Max);
String sql1="select * from tiku where id='"+i+"'";
ResultSet rs1=wu.executeQuery(sql1);
//此代码整体都调试过的,没有错误,而且随机函数也没有任何错误,但是就是rs1.next()有问题,其返回的结果集为空!可奇怪的是String sql1="select * from tiku where id='"+i+"'";其语句却完全正确,且调试时其也能够正确的得到随机函数产生的随机数,可就是不知道为什么不在rs1.next()时确为空,在调试过过程中,又出现一个问题就是:把String sql1="select * from tiku where id='"+i+"'";改成sql1="select * from tiku where id='5'";确又能够正确的得到一行纪录,请问这错误是出在哪里,但是随机函数确实又没有错,请问哪们高手帮帮忙!!!////

if(rs1.next())
{
int s0=rs1.getInt("id");
String s1=rs1.getString("Question");
String s2=rs1.getString("Keya");
String s3=rs1.getString("Keyb");
String s4=rs1.getString("Keyc");
String s5=rs1.getString("Keyd");
%>
<tr><td ><%=s0%></td>
<td colspan=4><%=s1%></td>
<tr><td width=24%><%=s2%></td>
<td width=24%><%=s3%></td>
<td width=24%><%=s4%></td>
<td width=24%><%=s5%></td>
<td width=4%><select name="select" size=1>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
</select></td>
<%}}%>
</table>
</body>
</html>
<%}
catch(Exception e)
{System.out.println(e.getMessage()+"error");}
%>

搜索更多相关主题的帖子: random 源代码 数据库 java 
2006-03-21 10:31
疯子java
Rank: 4
等 级:贵宾
威 望:13
帖 子:328
专家分:0
注 册:2004-9-19
收藏
得分:0 
我建议先将你得到的随机数打出来看看是多少,在表中是否存在
你说了你整体上都没有错误,但是又得不到记录
我现在就只能认为是你的随机数在表中根本就存在

疯言疯语 疯部可及 ---世界法第1章第1节第1条规定 此人由于说话太过于疯!!!其余人等切不可与其交谈! 此人由于说话太过于疯!!!此人的话100%的不能相信
2006-03-21 13:01
miss_friend
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2006-3-21
收藏
得分:0 
我也同意版主的想法,你先把i的值输出来看看呀
2006-03-21 13:15
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
首先谢谢版主与miss_friend给予本人的关注!
经过你们刚才的提醒之后,我又去验证了一下,随机函数与随机数是否正确。我首先查了下数据库当中的tiku表,而且我把“id定义了为主键。而且确实是随机函数能够产生的整数,但是还是不能够出现任何记录,与前面的情况是一模一样。本人被这个问题困扰了好几天了,找了好多资料看了,其思路也是这样的,好像根本就没有任何问题。请版主与各位高手帮帮
忙,本不不吝感谢!谢谢!
2006-03-21 13:39
gameovercn
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-10-25
收藏
得分:0 

试试定义rs1之前一行先把rs.close一下.


中国!!!你别玩了!!! 我昨天做梦了,我成了个框架师,哈哈
2006-03-21 16:14
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
谢谢gameovercn.也试了,可是就是没有用啦,不知道什么原因??
2006-03-21 16:37
wangtaobig
Rank: 1
等 级:新手上路
威 望:1
帖 子:42
专家分:0
注 册:2006-3-18
收藏
得分:0 

你程序写的很好,但用法不对,
一、Max(id)返回的是最大的那个id号,而不是总个数!如果你数据库中的ID是这样的(1、2、9)它返回的是9而不是3,那你在用random.nextInt(Max)(其中Max为9)有可能是4,在你数据中没有id为4的,就不对了,还有random.nextInt(Max)返回的是0-8中的一个整数,如果返回0,你有这个数据吗?
二、你的设计思想还有点小问题,你自己多看几遍代码


可能说的不对,还请多原谅!


2006-03-22 00:37
shuimu267
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2006-3-9
收藏
得分:0 
谢谢你wangtaobig,其实你说的也蛮有道理。具体而又细致的指出了一些常容易犯的错误。
我的数据库当中的ID是这样的(0,1,2,3,4,5,),所以说用Max(id)只能够一种返回结果,那就是5,还有你刚才讲的random.nextInt(Max)有可以返回0这个结果,可是我ID当中已经有了这个记录的ID呀,所以说你刚才讲的这两点,对于本人这个例子我都分析过了,不存在你刚才讲的问题。
不管怎么样还是谢谢您真诚而又细致的指出这么细致的问题!谢谢你,你可不可以把你的邮箱告诉我呢?
2006-03-22 09:30
wangtaobig
Rank: 1
等 级:新手上路
威 望:1
帖 子:42
专家分:0
注 册:2006-3-18
收藏
得分:0 

我的QQ15934543 加我QQ时请说明来意!(我是JAVA爱好者)Email wangtao09081@sina.com.cn 你的问题解决了吗?


2006-03-22 19:12
wangtaobig
Rank: 1
等 级:新手上路
威 望:1
帖 子:42
专家分:0
注 册:2006-3-18
收藏
得分:0 

还有你把你的成程包括你自己写的那个连接数据库的类也发给我,明晚我去我邮箱里看的!


2006-03-22 19:18
快速回复:求教?random类的一个无法解释的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054050 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved