A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 缠中说禅 初级黑马   /  2019-2-21 15:23  /  629 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 缠中说禅 于 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();






0 个回复

您需要登录后才可以回帖 登录 | 加入黑马