初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。

问题描述

初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。

import java.util.Scanner;
class Yanzheng{
private String n;
private String p;
public void setNa(String na){
this.n = na;
}
public void setPa(String pa){
this.p = pa;
}
public String getNa(){
return n;
}
public String getPa(){
return p;
}
public boolean fun1(String name,String password){
if(name.equals(getNa()) && password.equals(getPa())){
return true;
}
else{
return false;
}
}
}

class Caozuo{
private String name;
private String password;
public String str;
public void setName(String name){
this.name = name;
}
public void setPassword(String password){
this.password = password;
}
public String getName(){
return name;
}
public String getPassword(){
return password;
}
Yanzheng yz = new Yanzheng();
public String fun2(){
if(yz.fun1(getName(),getPassword())){
str = "欢迎" + name + " 帅哥光临";
}else{
str = "用户名或密码输入错误";
}
return str;
}
public void fun3(){
Scanner in = new Scanner(System.in);
String na = in.next();
String pa = in.next();
Yanzheng yz = new Yanzheng();
yz.setNa(na);
yz.setPa(pa);
}
}

public class ZhuceXitong{
public static void main(String args[]){
System.out.println("开始注册,请输入注册名和密码!");
Scanner in = new Scanner(System.in);
Caozuo cz = new Caozuo();
cz.fun3();
System.out.println("注册成功,请登录!");
System.out.println("请输入用户名和密码!");
String name = in.next();
String password = in.next();
cz.setName(name);
cz.setPassword(password);
System.out.println(cz.fun2());
}
}

解决方案

你错的地方是在fun3方法内,不应该new一个Yanzheng类实例,方法内部new的且未做返回值进行返回的实例是局部的,把这行代码去掉就OK,
另外不太明白为什么你这么写,你操作类和验证类为什么分开呢?验证不一样是一种操作?然后你的用户信息也没做存储啊。下面我做了个实例,
希望能对你有用。

 package com.mdjin;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

    class User{
        private String name;
        private String passWord;
        public String getPassWord() {
            return passWord;
        }
        public void setPassWord(String passWord) {
            this.passWord = passWord;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }

    class Caozuo {

        /**
         * 用户信息应该持久化的,此处用MAP对其进行存储.
         */
        Map<String,User> users = new HashMap<String,User>();

        public boolean zhuceyonghu(String _name,String _passWord){
            System.out.println(_name+_passWord);
            if(users.containsKey(_name)){
                System.out.println("用户名已被使用,请重新注册.");
                return false;
            }
            User user = new User();
            user.setName(_name);
            user.setPassWord(_passWord);
            users.put(_name, user);
            return true;
        }

        public boolean yanzhengyonghu(String _name,String _passWord){
            System.out.println(_name+_passWord);
            if(users.containsKey(_name)){
                User user = users.get(_name);
                if(user.getPassWord()!=null)
                    return _passWord.equals(user.getPassWord());
            }
            return false;
        }
    }

    public class ZhuceXitong2 {
        public static void main(String args[]) {
            System.out.println("开始注册,请输入注册名和密码!");
            Caozuo cz = new Caozuo();
            boolean flag = true;
            Scanner in = new Scanner(System.in);
            while(flag){
                String name = in.next();
                if(name.equals("quit")){
                    System.out.println("系统退出.");
                    return;
                }
                String password = in.next();
                flag = !cz.zhuceyonghu(name, password);
                if(flag){
                    System.out.println("注册失败,请重新输入用户名和密码,或者输入quit退出!");
                }
            }
            System.out.println("注册成功,请输入用户名和密码进行登录!");
            boolean flag2 = true;
            while(flag2){
                String name = in.next();
                if(name.equals("quit")){
                    System.out.println("系统退出.");
                    return;
                }
                String password = in.next();
                flag2 = !cz.yanzhengyonghu(name, password);
                if(flag2){
                    System.out.println("登录失败,请重新输入用户名和密码,或者输入quit退出!");
                }else{
                    System.out.println("欢迎:"+name+"归来.");
                }
            }
        }
}

解决方案二:

fun3里面,为何又new一个验证,如果要这样写,你可以改一些,将后面你new的赋给第一个yz。而且,将名字变一下嘛,不然怎么区分呢
public void fun3(){
Scanner in = new Scanner(System.in);
String na = in.next();
String pa = in.next();
Yanzheng yz1 = new Yanzheng();
yz1.setNa(na);
yz1.setPa(pa);
this.yz = yz1;
}

解决方案三:

  1. 把这个fun3()方法中的Yanzheng yz = new Yanzheng();去掉就可以了。
    原因:
    你new出来的这个对象为局部的,首先在fun2()方法中就得不到他的对象。并且你在fun2()方法上面都new了个了在fun3()里面就没必要在new了。
    new了就又创建个新的。对程序性能有影响。直接用第一个全局的就可以了赋值取值都是他就不会错了

解决方案四:

你这个代码注册成功之后是登陆,若登陆信息错误程序就停止了,你可以用switch来完成登陆,当登陆信息错误的时候使用break跳到登陆的代码重新登陆

解决方案五:

很抱歉,刚才网络原因提交了3次。非常抱歉

时间: 2024-08-03 22:57:04

初学java,自己用java写了一个简单的注册登录程序,没报错但有问题,希望能帮忙指点。的相关文章

exception-用java写了一个获取页面内容的方法,报错返回521码

问题描述 用java写了一个获取页面内容的方法,报错返回521码 我的代码如下: strUrl = "http://www.tlnews.cn/dzb/tlrb/html/2016-04/15/node_164.html"; public static String getUrlStr(String strUrl, String charSet){ String urlStr = ""; try { URL url = new URL(strUrl); URLCon

java-jsp+servlet写了一个简单的注册,但是出现找不到页面

问题描述 jsp+servlet写了一个简单的注册,但是出现找不到页面 小菜鸟刚写了一个简单的注册页面,但是配置好servlet以后出现找不到页面,找了好长时 间没有发现问题在哪里,希望有明白的给解释解释 解决方案 你写的是相对路径 ,一般用绝对路径 form 在 项目/page 下找相应页面,你的servlet 是映射在 项目/ 下的 你可以 在form 的action 改为 ../addUser 试试 解决方案二: 看看这个: 路径总结: 路径分为两种情况: 1.客户端路径 ==> 给浏览器

struts2.0-我写了一个简单的struts2登录验证但是不能跳转,找了好久也不知道为什么,请大神帮忙看一下,先谢了

问题描述 我写了一个简单的struts2登录验证但是不能跳转,找了好久也不知道为什么,请大神帮忙看一下,先谢了 解决方案 SUBMITE提交呢? 解决方案二: 解决方案三: 调试下Action方法进入了吗?

checkbox-刚学完JS和servlet,写一个简单的注册登录页面

问题描述 刚学完JS和servlet,写一个简单的注册登录页面 ,想把checkbox选中的的数据和下拉列表选中的的年月日组合成字符串发送给servlet,该怎么做,求大神指教 解决方案 username: password: 表单 action 对应的servlet method 提交方式,对应servlet的doPost和doGet方法 在servlet中写 req.getParameter("username"); req.getParameter("password&

做一个简单的jsp登陆界面servlet报错

问题描述 做一个简单的jsp登陆界面servlet报错 package com.demo; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.Serv

C#下写的一个简单的CSGL纹理程序,可是纹理出来的效果有黑边,不知为何,请xdjm帮帮忙。

问题描述 protectedoverridevoidInitGLContext(){base.InitGLContext();GL.glShadeModel(GL.GL_SMOOTH);//EnableSmoothShadingGL.glClearColor(0.7f,0.7f,0.9f,0.5f);//BlackBackgroundGL.glClearDepth(1.0f);//DepthBufferSetupGL.glEnable(GL.GL_DEPTH_TEST);//EnablesDep

C#MOBILE开发一个简单的显示图片页面却报错~!

问题描述 页面加载代码如下:privatevoidSOM_Load(objectsender,EventArgse){BitmapmyJpeg=newBitmap("../image/DSC03419.JPG");pictureBox1.Image=(Image)myJpeg;}就算直接定义pictureBox图片属性也报错-! 解决方案 解决方案二:调试一下看看myJpeg有值么?解决方案三:privatevoidSOM_Load(objectsender,EventArgse){B

java代码-我用Java 写的一个简单截图小工具 但是出现一些在重截时出现bug 跪求大神

问题描述 我用Java 写的一个简单截图小工具 但是出现一些在重截时出现bug 跪求大神 /**在这里贴上我注释满满的代码 求一语道破 求建议 求批评 没有贴main 方法 随便写个main方法便可运行 */ ` package com.subimaga; import java.awt.AWTException; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Cursor; import java.

问题-刚开始学习java ,自己写了一个聊天小程序,没报错但是有毛病,希望能帮忙问一下

问题描述 刚开始学习java ,自己写了一个聊天小程序,没报错但是有毛病,希望能帮忙问一下 刚开始学习java ,自己写了一个聊天小程序,没有报任何错误.测试时打开3个聊天小窗口 A,B,C,在A中输入文字,只在B中显示出来了,而且显示出了三句相同语句.查了好几个小时都没有查出来,希望高手能帮帮忙,看看是怎么回事,并且告诉我是通过什么方法找出来的. 以下是客户端和服务器端代码 客户端: import java.awt.*; import java.awt.event.*; import java