本帖最后由 缠中说禅 于 2019-2-21 16:03 编辑
bug-1
创建人 刘瑞佳
问题标题 运行结果异常
问题分类 输出有错误
一级话题 遍历Map集合不能正常遍历
[Java] 纯文本查看 复制代码 Map<String, Integer> map = new HashMap<>();
map.put("东", 1);
map.put("南", 2);
map.put("西", 3);
map.put("北", 4);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
Iterator<Map.Entry<String, Integer>> it = entries.iterator();
while (it.hasNext()) {
// 这里出现错误
String key = it.next().getKey();
Integer value = it.next().getValue();
System.out.println(key + "=" + value);
}
问题分析:
最后输出结果不能正常遍历整个集合,而是输出其中两个键,并且值不对应。可以判断出是循环体内出现错误。从迭代器原理来说,it.next()运行一次,则会将指针向后移,循环体内出现了两次it.next()。所以导致结果输出错误。
问题解决方法:
将循环体内获取key与value的表达式修改,把it.next()方法的返回值单独创建一个变量进行接收。然后再使用getKey与getValue方法获取键与值。
bug-2创建人 刘瑞佳
问题标题 运行问题
问题分类 网站计时器应用得不到预期效果
一级话题 Uncaught TypeError: Cannot set property 'src' of undefined
at fun (6_xxxxxxx.html?_ijt=r3i1u71t09a7vo3lc194fcugem:52)
1 个错误
附件
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<script>
window.onload = function () {
var table = document.getElementsByTagName("table")[0];
var text1 = "";
for (var j = 0; j < 5; j++) {
text1 += "<td>\n" +
"<img src=\"img/off.gif\" name=\"light1\" >\n" +
"</td>";
}
var text2 = "";
for (var i = 0; i < 3; i++) {
text2 += ("<tr>\n" + text1 + "</tr>");
}
table.innerHTML += text2;
var tds = document.getElementsByTagName("img");
var flag = false;
for (i = 0; i < tds.length; i++) {
tds[i].onmouseover = function () {
flag = true;
this.src = "img/on.gif";
};
tds[i].onmouseout = function () {
<!--这里出现错误-->
setTimeout(this.src="img/off.gif", 1000);
};
}
}
</script>
</table>
</body>
</html>
</body>
</html>
问题分析:
网页加载之后,计时器不能正常运行,没有等待效果。也就是在计时器加载时会直接将图片属性修改。
问题解决方法:
setTimeout方法在第一个参数为立即执行函数或者代码的情况下,在加载计时器时会直接执行。所以需要将第一个参数换为方法。
这样在加载计时器时,不会立即执行更改图片信息的代码,而是加载方法信息。方法内的代码会延迟执行。
[HTML] 纯文本查看 复制代码
tds[i].onmouseout = function () {
var temp = this;
setTimeout(function(){temp.src="img/off.gif"}
, 1000);
};
bug-3
创建人 刘瑞佳
问题标题 运行问题
问题分类 表单校验修改信息得不到预期效果,会将输入框内容清除。
[AppleScript] 纯文本查看 复制代码 <html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body{
background-image: url("img/register_bg.png");
}
#font1{
color:#ffd026;
font-size: 18px;
}
#enfont{
color:slategray;
}
.afont{
color:pink;
text-decoration: none;
}
.div_big{
border:8px solid #EEEEEE;
background: white;
height:450px;
width:800px;
margin: auto;
margin-top: 100px;
}
.div_left{
float:left;
margin:20px;
}
.div_center{
float:left;
margin-left:50px;
margin-top:30px;
font-size:3px;
}
.div_right{
float:right;
margin-top: 20px;
margin-right: 10px;
font-size: 3px;
}
#username,#password,#email,#name,#phonenumber,#birthday,#checkmode{
margin-left:40px;
margin-top:10px;
margin-bottom:3px;
border-radius: 5px;
border:1px solid #EEEEEE;
height:25px;
width: 220px;
}
#gender{
margin-left:50px;
margin-top:10px;
}
#checkmode{
width: 80px;
margin-right:10px;
height:30px;
margin-top:0px;
}
td label{
color: slategray;
}
#checkimg{
border: 1px solid #ffd026;
background-color: #ffd026;
width:100px;
height:30px;
}
.td_left{
text-align: right;
margin-top: 20px;
}
.img_last{
height:30px;
width:100px;
vertical-align: middle;
}
</style>
<script>
window.onload=function(){
document.getElementById("form").onsubmit=function () {
return checkUsername();
}
document.getElementById("username").onblur=checkUsername;
}
function checkUsername(){
var username = document.getElementById("username").value;
var reg =/^\w{6,12}$/;
var flag = reg.test(username);
// 在这里出现错误。
if(flag){
document.getElementById("user_td").innerHTML = "<img src='img/gou.png'>";
}else{
document.getElementById("user_td").innerHTML =
"<font color='red'>输入格式错误</font>";
}
return flag;
}
</script>
</head>
<body>
<div class="div_big">
<div class="div_left">
<span id="font1">新用户注册</span><br>
<span id="enfont">USER REGISTER</span>
</div>
<form id="form">
<div class="div_center">
<table>
<tr id="username_tr">
<td class="td_left"><label for="username">用户名</label></td>
<td class="td_right"><input type="text" name="username" id="username" placeholder="请输入用户名"></td>
<td id="user_td"></td>
</tr>
<tr>
<td class="td_left"><label for="password">密码</label></td>
<td class="td_right"><input type="password" name="password" id="password" placeholder="请输入密码"></td>
</tr>
<tr>
<td class="td_left"><label for="email">Email</label></td>
<td class="td_right"><input type="email" name="email" id="email" placeholder="请输入Email"></td>
</tr>
<tr>
<td class="td_left"><label for="name">姓名</label></td>
<td class="td_right"><input type="text" name="name" id="name" placeholder="请输入真实姓名"></td>
</tr>
<tr>
<td class="td_left"><label for="phonenumber">手机号</label></td>
<td class="td_right"><input type="number" name="phonenumber" id="phonenumber" placeholder="请输入您的手机号"></td>
</tr>
<tr>
<td class="td_left"><label>性别</label></td>
<td class="td_right"><input type="radio" name="gender" value="male" id="gender"> 男
<input type="radio" name="gender" value="female"> 女
</td>
</tr>
<tr>
<td class="td_left"><label >出生日期</label></td>
<td class="td_right"><input type="date" name="birthday" id="birthday"></td>
</tr>
<tr>
<td class="td_left"><label for="checkmode">验证码</label></td>
<td class="td_right"><input type="text" name="checkmode" id="checkmode" placeholder="请输入验证码">
<img class="img_last" src="./img/verify_code.jpg">
</td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="注册" id="checkimg"></td>
</tr>
</table>
</div>
</form>
<div class="div_right">
<span id="font2">已有账号?<a href="#" aria-invalid="false" class="afont">立即登录</a></span>
</div>
</div>
</body>
</html>
问题分析:
这个案例在最初始的代码中,直接对要校验的tr标签的标签体内容进行了重写。当输入内容,并且离焦之后,该td标签下的输入框内容消失。
问题解决方法:
添加表单校验结果时没有在tr标签下重新建立一个新的子标签<td>。并给新的td标签的id属性赋值。随后在获取该标签对象,对该标签进行标签体内容的修改。修正该问题。
bug-4
创建人 刘瑞佳
问题标题 编译问题
问题分类 编译错误
一级话题 Error:(25, 27) java: 在相应的 try 语句主体中不能抛出异常错误access01.day05.test.test5_hard.ScanError
问题补充 自定义了异常类ScanError
[Java] 纯文本查看 复制代码 age = scanner.next();
char[] ageArray = age.toCharArray();
try {
for (int i = 0; i < ageArray.length; i++) {
if (ageArray[i] < '0' || ageArray[i] > '9') {
isRight = false;
}
isRight = true;
}
} catch (ScanError e) { //这里是25行
System.out.println("您输入的年龄格式有误,请重新输入!");
}
问题分析:
使用try…catch语句处理可能发生异常的语句,
对于JDK中已经定义好的异常类,只要在方法声明处throws就可以了,运行时发生异常就会被catch捕获到
对于自定义异常,使用try…catch,try代码里要throw 自定义的异常对象,才能被catch捕获到
问题解决方法:
在if判断语句的执行体内最后一行添加
throw new ScanError();
bug-5
创建人 刘瑞佳
问题标题 运行异常
问题分类 Object类中的wait()方法和notify()方法
一级话题 Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.base/java.lang.Object.wait(Native Method)
at java.base/java.lang.Object.wait(Object.java:516)
at access01.day06.practice.BaoZiPu.GuKe.run(GuKe.java:17)
at java.base/java.lang.Thread.run(Thread.java:844)
[Java] 纯文本查看 复制代码
//这是其中一个Runnable实现类,用于建立新的线程;
//另外还有其他的Runnable实现类,也有wait()和notify()方法
synchronized (bz){
if(bz.isFlag()==true){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
……
notify(); //用于唤醒其他线程的wait()
}
问题分析:
作为Object类的方法,wait()和notify()要使用对象来调用,注意直接写wait()和notify()编译是不报错的。
问题解决方法:
把wait()和notify()改为bz.wait();和bz.notify();
|