首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

比较头疼的数组+循环+条件判断的有关问题

2011-12-21 
比较头疼的数组+循环+条件判断的问题先看代码:Java codepackage Userimport java.util.Scannerpublic cl

比较头疼的数组+循环+条件判断的问题
先看代码:

Java code
package User;import java.util.Scanner;public class UserManager {    public static void main(String[] args)     {        DbStore abc = new DbStore();                Scanner input = new Scanner(System.in);        System.out.println("请输入用户名:");        String name = input.next();        System.out.println("请输入密码:");        int password = input.nextInt();        for(int i=0;i<abc.getEntryArr().length;i++)            {            if((!abc.getEntryArr()[i].getUserName().equals(name))&&(!abc.getEntryArr()[i].getUserPwd().equals(password)))            {                System.out.println("用户不存在或密码错误!");            }            else            {            System.out.println("该用户的真实姓名为"+abc.getEntryArr()[i].getRealName());            }        }    }}


下面是DbStore类:
Java code
package User;public class DbStore {    private UserEntity[] entryArr;//声明一个数组变量    public DbStore() //初始化用户实体数组    {        UserEntity ue1 = new UserEntity();        ue1.setAge(21);        ue1.setCellPhone("888888881");        ue1.setEmail("damo1@qq.com");        ue1.setRealName("大漠1");        ue1.setUserId("001");        ue1.setUserName("damo1");        ue1.setUserPwd("1");        UserEntity ue2 = new UserEntity();        ue2.setAge(22);        ue2.setCellPhone("888888882");        ue2.setEmail("damo2@qq.com");        ue2.setRealName("大漠2");        ue2.setUserId("002");        ue2.setUserName("damo2");        ue2.setUserPwd("2");        UserEntity ue3 = new UserEntity();        ue3.setAge(23);        ue3.setCellPhone("888888883");        ue3.setEmail("damo3@qq.com");        ue3.setRealName("大漠3");        ue3.setUserId("003");        ue3.setUserName("damo3");        ue3.setUserPwd("3");        UserEntity ue4 = new UserEntity();        ue4.setAge(24);        ue4.setCellPhone("888888884");        ue4.setEmail("damo4@qq.com");        ue4.setRealName("大漠4");        ue4.setUserId("004");        ue4.setUserName("damo4");        ue4.setUserPwd("4");        UserEntity ue5 = new UserEntity();        ue5.setAge(25);        ue5.setCellPhone("888888885");        ue5.setEmail("damo5@qq.com");        ue5.setRealName("大漠5");        ue5.setUserId("005");        ue5.setUserName("damo5");        ue5.setUserPwd("5");        setEntryArr(new UserEntity[] { ue1, ue2, ue3, ue4, ue5 });    }    public static void main(String[] args)     {              DbStore uf = new DbStore();        for(int i=0;i<uf.getEntryArr().length;i++)        {            System.out.println("用户编号:"+uf.getEntryArr()[i].getUserId());            System.out.println("登陆名称:"+uf.getEntryArr()[i].getUserName());            System.out.println("登陆密码:"+uf.getEntryArr()[i].getUserPwd());            System.out.println("真实姓名:"+uf.getEntryArr()[i].getRealName());            System.out.println("年龄:"+uf.getEntryArr()[i].getAge());            System.out.println("手机号码:"+uf.getEntryArr()[i].getCellPhone());            System.out.println("电子邮箱:"+uf.getEntryArr()[i].getEmail());            System.out.println("\r\n");                    }    }    public void setEntryArr(UserEntity[] entryArr) {        this.entryArr = entryArr;    }    public UserEntity[] getEntryArr() {        return entryArr;    }}



执行的问题是:程序把输入的name和password 先与entryArr[0]比较,然后才是entryArr[1]/[2]/[3]/[4]



所以如果输入damo2、damo3、damo4、damo5,虽然是对的,但是肯定还会报错

求解答。



[解决办法]
...你这个成功之后都没有终止循环。。。他当然会出现报错啦。。。

Java code
 for(int i=0;i<abc.getEntryArr().length;i++)            {            if((!abc.getEntryArr()[i].getUserName().equals(name))&&(!abc.getEntryArr()[i].getUserPwd().equals(password)))            {                System.out.println("用户不存在或密码错误!");            }            else            {            System.out.println("该用户的真实姓名为"+abc.getEntryArr()[i].getRealName());            [color=#FF0000]break;[/color]            }        }
[解决办法]
当然啦,你这样的判断,无论你输入什么, System.out.println("用户不存在或密码错误!");这行代码都会被执行。有几个用户就要循环几次,如果已经判断信息正确了,循环还要继续吗?lz 你思考思考.....


 
[解决办法]
探讨

对。我想要的是。把0到4比较完了,如果没有匹配的,再输出
引用:
for(int i=0;i<abc.getEntryArr().length;i++)

你的循环是从0开始的,那当然是先与entryArr[0]比较,然后才是entryArr[1]/[2]/[3]/[4] ,不然的话你想做成怎样的效果。。

[解决办法]
Java code
package User;import java.util.Scanner;public class UserManager {    public static void main(String[] args) {        DbStore abc = new DbStore();        Scanner input = new Scanner(System.in);        System.out.println("请输入用户名:");        String name = input.next();        System.out.println("请输入密码:");        String password = input.next();        boolean isExist = false;        for (int i = 0; i < abc.getEntryArr().length; i++) {            if (abc.getEntryArr()[i].getUserName().equals(name) && abc.getEntryArr()[i].getUserPwd().equals(password)) {                System.out.println("该用户的真实姓名为" + abc.getEntryArr()[i].getRealName());                isExist = true;                break;            }        }        if (!isExist) {            System.out.println("用户不存在或密码错误!");        }    }}
[解决办法]
竟然连变量名都一样。。。

探讨
引用:

对。我想要的是。把0到4比较完了,如果没有匹配的,再输出
引用:
for(int i=0;i<abc.getEntryArr().length;i++)

你的循环是从0开始的,那当然是先与entryArr[0]比较,然后才是entryArr[1]/[2]/[3]/[4] ,不然的话你想做成怎样的效果。。
……

[解决办法]
switch只支持byte、short、int、char这几种类型参数,其余类型不给予支持。
[解决办法]
探讨
Java code

package User;
import java.util.Scanner;

public class UserManager {
public static void main(String[] args) {
DbStore abc = new DbStore();

Scanner input = new S……

[解决办法]
探讨

竟然连变量名都一样。。。

引用:
引用:

对。我想要的是。把0到4比较完了,如果没有匹配的,再输出
引用:
for(int i=0;i<abc.getEntryArr().length;i++)

你的循环是从0开始的,那当然是先与entryArr[0]比较,然后才是ent……

[解决办法]
数组+循环+条件不头疼,关键看是什么问题:这个就和八楼的一样,你设置标志变量不就搞定了吗

热点排行
Bad Request.