java菜鸟的程序 运行出错分析

public class User{
String userName="aaa";
String password="bbb";
public void Login(String name,String pass){
if (userName==name && password==pass){
System.out.println("登陆成功!");
}else{
System.out.println("登陆失败!");
}
}

public static void main (String[] args){
User u=new User();
u.Login(args[0],args[1]);
}

}
请解释下Exception in thread"main"java.lang.ArrayIndexOutOfBoundsException:0 at User.main<User.java:15>

原因:
你没有给数组args指定他要的数值,
导致:索引越界异常。
这样写就不报错:
public class User{
String userName="aaa";
String password="bbb";
public void Login(String name,String pass){
if (userName.equals(name) && password.equals(pass)){
System.out.println("登陆成功!");
}else{
System.out.println("登陆失败!");
}
}

public static void main (String[] args){
User u=new User();
u.Login("aaa","bbb");
}

}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-23
字符串相同比较不能用==,要用equals
userName.equals(name) && password.equals(pass)
你的args初始时空的,当然会报数据越界错误.
运行的时候改成这样就行了:
java User aaa bbb
第2个回答  2009-07-23
首先,你理解错了一个问题!
public static void main (String[] args)
main函数调用,参数String[]数组类型args,主函数中调用参数不必写成你这样
u.Login(args[0],args[1]);
如果你这样写,程序并不知道你的args[0],args[1]的值究竟是什么.args[0]属于String类型,
直接写个String类型就可以了,u.Login("username","password");

java.lang.ArrayIndexOutOfBoundsException
属于数组越界异常.
第3个回答  2009-07-23
ArrayIndexOutOfBoundsException:越界了,改成User u=new User();
u.Login("aaa","bbb");

而且Java里String间的比较应该用userName.equals(name)这样
第4个回答  2009-07-23
ArrayIndexOutOfBoundsException

记住这个是数组越界!
第5个回答  2009-07-23
你在运行的时候没有传入参数。。。

还有这程序是永远不会登陆成功的! ==比较的是对象句柄。
比较字符串应该用 equals
相似回答