初学Java,请教中。。。

问题描述

/*用户类*/publicclassUser{privateintuId;privateStringuName;privateStringuPass;privateintgender;/*中间省略get/set方法*/publicvoidgetUserInfo(){System.out.println("====用户信息====");System.out.println("用户名:"+uName);System.out.println("用户密码:"+uPass);System.out.println("性别:"+UserDao.sex);}}/*接口*/publicinterfaceUserDao{Useruser=newUser();publicstaticfinalStringsex=user.getGender()==1?"男":"女";publicUserfindUser(StringuName);//根据用户名查找论坛用户publicintaddUser(Useruser);//增加论坛用户,返回增加个数publicintupdateUser(Useruser);//修改论坛用户的信息,返回修改个数}/*实现接口类*/publicclassUserDaoImplimplementsUserDao{privateUser[]users=newUser[10];/***增加用户*/publicintaddUser(Useruser){//TODOAuto-generatedmethodstubfor(inti=0;i<10;i++){if(users[i]==null){users[i]=user;users[i].setuId(i);return1;}}return0;}/***查找用户*/publicUserfindUser(StringuName){//TODOAuto-generatedmethodstubfor(inti=0;i<10;i++){if(users[i]!=null&&users[i].getuName().equals(uName)){returnusers[i];}}returnnull;}/***更新用户,用户id不可以更改*/publicintupdateUser(Useruser){//TODOAuto-generatedmethodstubfor(inti=0;i<10;i++){if(users[i]!=null&&users[i].getuName().equals(user.getuName())){users[i]=user;return1;}}return0;}}/*测试类*/publicclassTest{publicstaticvoidmain(String[]args){UserDaouserDao=newUserDaoImpl();Useruser1=newUser();user1.setuName("spiderman");user1.setuPass("spiderman");user1.setGender(2);userDao.addUser(user1);Useruser2=newUser();user2.setuName("superman");user2.setuPass("1");user2.setGender(1);userDao.addUser(user2);userDao.findUser("spiderman").getUserInfo();userDao.findUser("superman").getUserInfo();}}输出结果为:====用户信息====用户名:spiderman用户密码:spiderman性别:女====用户信息====用户名:superman用户密码:1性别:女请教,为什么性别判断错误?在接口中我做的判断有问题嘛?请指导下我该如做修改!!!为什么!!!谢谢!!!

解决方案

解决方案二:
maybebecauseit'sastaticvariable
解决方案三:
static&final
解决方案四:
引用1楼lds1ove的回复:

maybebecauseit'sastaticvariable

publicstaticfinalStringsex=user.getGender()==1?"男":"女";引用2楼lds1ove的回复:

static&amp;final

你new第一个对象时对sex进行了初始化,而final修饰的sex不可再更改,所以一直都是2。。。
解决方案五:
那该如何解决呢??
解决方案六:
/*用户类*/publicclassUser{privateintuId;privateStringuName;privateStringuPass;privateintgender;/*中间省略get/set方法*/publicvoidgetUserInfo(){System.out.println("====用户信息====");System.out.println("用户名:"+uName);System.out.println("用户密码:"+uPass);//System.out.println("性别:"+UserDao.sex);UserDao.sex为啥性别要是别人的性别System.out.println("性别:"+(gender==1?"男":"女"));//判断自己是男是女
解决方案七:
updatebycorrectformat/*用户类*/publicclassUser{privateintuId;privateStringuName;privateStringuPass;privateintgender;/*中间省略get/set方法*/publicvoidgetUserInfo(){System.out.println("====用户信息====");System.out.println("用户名:"+uName);System.out.println("用户密码:"+uPass);//System.out.println("性别:"+UserDao.sex);UserDao.sex为啥性别要是别人的性别System.out.println("性别:"+(gender==1?"男":"女"));//判断自己是男是女

解决方案八:
修改User中的getUserInfo()方法publicvoidgetUserInfo(){System.out.println("====用户信息====");System.out.println("用户名:"+uName);System.out.println("用户密码:"+uPass);StringstrGender=this.gender==1?"男":"女";System.out.println("性别:"+strGender);}}

解决方案九:
用final修改的变量,从始至终不会变了
解决方案十:
该回复于2011-03-10 15:58:11被版主删除
解决方案十一:
UserDao接口设计得莫名其妙
解决方案十二:
接口赋值后就改不了了还是在类里自己判断性别publicvoidgetUserInfo(){System.out.println("====用户信息====");System.out.println("用户名:"+uName);System.out.println("用户密码:"+uPass);StringstrGender=this.gender==1?"男":"女";System.out.println("性别:"+strGender);}}

解决方案十三:
你那个接口设计得不好,我个人建议,接口里面不要记录数据接口中,如下代码Useruser=newUser();publicstaticfinalStringsex=user.getGender()==1?"男":"女";而User类中成员变量gender并未初始化,于是JAVA默认将其初始化为0,而接口中的sex又是常量,所以获取到的一直是女你的做法不是一种很好设计方法,不符合我们写程序过程中的设计,接口里面任何数据都不要记录,只是提供一些没有实现的方法。你的那个接口都可以叫做抽象类了。你最好把这几个概念弄懂
解决方案十四:
学习了,关于final修饰符很多新手都容易搞错的
解决方案十五:
你那个接口设计得不好,我个人建议,接口里面不要记录数据接口中,如下代码Useruser=newUser();publicstaticfinalStringsex=user.getGender()==1?"男":"女";而User类中成员变量gender并未初始化,于是JAVA默认将其初始化为0,而接口中的sex又是常量,所以获取到的一直是女你的做法不是一种很好设计方法,不符合我们写程序过程中的设计,接口里面任何数据都不要记录,只是提供一些没有实现的方法。你的那个接口都可以叫做抽象类了。你最好把这几个概念弄懂

时间: 2024-08-01 22:07:32

初学Java,请教中。。。的相关文章

异常-java核心技术中一个关于数组的例子不理解,请教大家

问题描述 java核心技术中一个关于数组的例子不理解,请教大家 Person是Employer的父类,Employer有个新方法setBonus,代码如下 Employer[] emprs ={new Employer("张三"),new Employer("李四")}; Person[] ps =emprs; ps[0] = new Person("小明");//运行时该行报错ArrayStoreException emprs[0].setBo

请教-请我我一个初学Java的人应该看什么书?????

问题描述 请我我一个初学Java的人应该看什么书????? 大家好,我是一个新手,初学Java,我想请问我大学毕业转行学Java,应该看什么书,在线请教 解决方案 估计你没什么兴趣学什么东西,都毕业了已经过了求知的年龄.你的意图无非是掌握一种能混饭吃的本领. 因此,去耐心学习理论,你不感兴趣. 推荐你看李刚的疯狂系列.比如<疯狂Java讲义>,这种书估计对你找一个初级码农的工作比较有现实的意义. 解决方案二: 超级谢谢,我最近才学的,也乱啊,没办法,为了生活,只有重新学习 解决方案三: 21天

初学Java所需要注意的几点

初学 Java总有它的千般好处使你选择它,但这些随便翻翻书或在网上逛一圈就能找到答案.在本文中,笔者把自己学习Java的一些切身体会和过程写出来,供初学者做个参考. 我在学习Java的过程中主要围绕以下几个方面来学习: 1.时刻提醒自己Java是一种OOP语言工具,而不仅仅是编码,只有这样才能总体把握和运用Java. 2.在学习的过程中,最好能够了解Java的底层机制,而不是仅仅停留在表层,不是抄书上的例子运行出结果就可以.要注意,即便对一个简单的例子也要有耐心去琢磨.调试.改动. 3.在学习的

初学JAVA,集合迭代器问题

问题描述 初学JAVA,集合迭代器问题 这两句输出有什么不一样呀!为什么一个可以输出,一个却输出不了?这是Account类的定义. 解决方案 用Iterator<Object>才行. 解决方案二: Java中的集合的迭代器Java 集合 和 Iterator迭代器java集合之迭代器Iterator 解决方案三: 泛型错误! 名为it的迭代器泛型指明为Accout,所以在it.next().toString() 的时候 取出字符串类型被强转为Accout,由于这两个类没关系所以报错.第一句输出

初学java 请问怎么用eclipse编辑已有的java文件呢

问题描述 初学java 请问怎么用eclipse编辑已有的java文件呢 要编辑的java文件目录如下: java文件的内容如下: 问题来了,如何用eclipse编辑这个java文件呢,我试着新建了java项目,并把以上文件引入到src下,但是编辑时候,会显示下面的错误: 我是初学java请问应该怎样用ecplise编辑现有目录下的java文件,并保存为.class文件呢?我知道肯定是我引入文件不全或者没有正确引入,应该怎么操作呢因为急着要用,所以也没时间学习java基础,所以最好能详细一点,谢

操作-【急】问一个关于java web中tomcat连接mysql数据库的问题(问题点数40无满意结贴

问题描述 [急]问一个关于java web中tomcat连接mysql数据库的问题(问题点数40无满意结贴 我是计科专业在做毕业设计没接触过java,做一个在线答疑系统,在csdn上下了一个jsp+struts2+spring的感觉比较全的系统,下载地址为http://download.csdn.net/detail/hmshust/6950301,该文是0积分的,下载的如图![图片说明](http://img.ask.csdn.net/upload/201505/07/1431008698_8

抽象方法 继承-初学Java 有个地方看不懂

问题描述 初学Java 有个地方看不懂 /* 汽车类/ public abstract class MotoVehicle { / 将成员变量封装隐藏起来,private 权限只在类内显示 / private String no;//车牌号 private String brand;//品牌 private int perRend;//日租金 public abstract float calRent(int days);//抽象方法 用来计算租金 public abstract void le

内部类-Java编程中A类如何调用B类中M方法里的C类的实例?

问题描述 Java编程中A类如何调用B类中M方法里的C类的实例? import java.awt.*; import java.awt.event.*; public class TestListener{ public static void main(String[] args){ Counter c1 = new Counter("Hello"); c1.CreatButton(); c1.add(c1.button); ----------------------------(

初学java 感觉写的程序很乱,没有美感

问题描述 小弟初学java,感觉写出来的程序乱糟糟,有时候能写出一个很长的类,里面什么都有,没有美感,看过一些高手写的程序,觉得他们写的看起来真舒服,可是自己就是写不会...郁闷,请问写程序有什么原则或者应该按什么准则写才会有美感啊,我写的程序总是感觉乱. 解决方案 解决方案二:呵呵,你用过IDE么,建议用Eclipse,用IDE会让代码显得更美观解决方案三:只要你想要实现一个功能的时候,相应代码就写成一个方法,别把所有的都写在一起多分类,能写成方法的都最好写成方法解决方案四:见多了,写多了,代

mongodb的java开发中使用两个字段相等查询条件应该怎么写?

问题描述 mongodb的java开发中使用两个字段相等查询条件应该怎么写? 也就是类似sql中的where 字段A=字段B这样的条件,我查了下网上有些帖子中写的用$where的方式我查询的时候会出错,类似于:new Document("$where",new Document("字段A", "字段B")),驱动版本是3.0 在网上查到一个帖子:http://cache.baiducontent.com/c?m=9d78d513d99c1cf30