代码如下
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
User user = new User();
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String sName = request.getParameter("username");
String sPassword = request.getParameter("password");
String sRepassword = request.getParameter("repassword");
String sSex = "1";
String snickName = request.getParameter("nickname");
if(sName==null){
//姓名不能为空
out.println("<h3>姓名不能为空</h3>");
return;
}
if(sPassword==null){
//密码不能为空
out.println("<h3>密码不能为空</h3>");
return;
}
if(sRepassword==null){
//确认密码不能空
out.println("<h3>确认密码不能空</h3>");
return;
}
/*if(sSex==null){
//性别不能为空
return;
}*/
if(sPassword!=sRepassword){
//两次输入密码不一致
out.println("<h3>两次输入密码不一致</h3>");
return;
}
if(user.checkUser(sName))
{
//用户名已经被占用
out.println("<h3>用户名已经被占用</h3>");
return;
}
if(user.doUserRegister(sName, sPassword, sSex, snickName)){
//注册成功!
out.println("<h3>注册成功!</h3>");
}
else{
//注册失败!
out.println("<h3>注册失败!</h3>");
}
}
静态页面就不用写了传递的参数也都传递过来了 ,现在是我传的是两个密码
一个是Password=1&rpassword=1
可是在判断的时候sPassword!=sRepassword返回值是true 好不明白为什么呢?java

解决方案 »

  1.   

    能不能在return的时候加个false或者true,就光一个return,恐怕会有问题,另外确定sPassword以及sRepassword的值都传入进来了么
      

  2.   

    判断是否相等的时候用
    !sPassword.equal(sRepassword)
    sPassword!=sRepassword是判断的两个变量的内存地址
      

  3.   

    确定传过来的参数是一样的,因为是get方法传递的,参数值是可以看到的,我调试的时候也是一样的我的返回值是void 要不要true、false好像没意
      

  4.   

    sPassword!=sRepassword都是string类型,就不要用!=比较大小。
      

  5.   

    字符串不是变量吗?好纠结啊 如果是对象我还知道用equal方法可是字符串这个东东还是有点糊涂
      

  6.   


    JAVA里所有的东西都是对象,没有变量,旧版本中还有原始类型是非对象的,
    但是加了自动装箱拆箱后,所有原始类型都被自动装箱成对象了。JAVA的字符串也是对象。关于用 == 还是 equal ,没有一定之规,
    完全看你要比较的是对象引用的值(用C的术语来说就是指向对象的指针),还是要比较的是是对象的特性值。
    如果是判断是否是指向同一对象的指针,就用 == 
    如果是判断两个对象的特性值是否一样,就用equals(或者自己实现的compareTo)如果看一下String的equals的源码,第一行就是用 == 比较是否是同一个对象,如果是同一个对象就直接返回true,因为自己和自己比的话,同一个对象的值总是相等的:
        /**
         * Compares this string to the specified object.  The result is {@code
         * true} if and only if the argument is not {@code null} and is a {@code
         * String} object that represents the same sequence of characters as this
         * object.
         *
         * @param  anObject
         *         The object to compare this {@code String} against
         *
         * @return  {@code true} if the given object represents a {@code String}
         *          equivalent to this string, {@code false} otherwise
         *
         * @see  #compareTo(String)
         * @see  #equalsIgnoreCase(String)
         */
        public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
    char v1[] = value;
    char v2[] = anotherString.value;
    int i = offset;
    int j = anotherString.offset;
    while (n-- != 0) {
        if (v1[i++] != v2[j++])
    return false;
    }
    return true;
        }
    }
    return false;
        }
    此外还需要注意要常量池的问题,比如如下代码:
    public class StringTests {
        
        public static void main(String[] args) {        String a = "abc";
            String b = new String("abc");
            String c = new String("abc").intern();
            
            System.out.println(a == b);
            System.out.println(a == c);    }}输出是false,true,可以仔细研究下为什么。
      

  7.   

    http://1023mmmm.blog.163.com/blog/static/38840225201210221943859/
    刚刚看到的顺便贴上来
      

  8.   

    String不是对你怎么会有属性和方法呢?!
      

  9.   

    String不是对像怎么会有属性和方法呢?!
      

  10.   

    一直没看帖子,String 不是一个特殊的类吗? jdk中都有说明的啊