贴源代码:
class Check{ // 完成具体的验证操作
public boolean validate(String name,String password){
if(name.equals("lixinghua")&&password.equals("mldn")){ // 验证
return true ;
}else{
return false ;
}
}
};
class Operate{ // 本类只是调用具体的验证的操作
private String info[] ; // 定义一个数组属性,用于接收全部输入参数(为什么可以这样定义数组???) public Operate(String info[]){
this.info = info ; // 通过构造方法取得全部的输入参数
}
public String login(){
Check check = new Check() ; // 实例化Check对象,用于检查信息
this.isExit() ; // 判断输入的参数是否正确
String str = null ; // 用于返回信息
String name = this.info[0] ;// 取出姓名
String password = this.info[1] ; // 取出密码
if(check.validate(name,password)){ // 登陆验证
str = "欢迎" + name + "光临!" ;
}else{
str = "错误的用户名和密码!" ;
}
return str ;
}
public void isExit(){ // 判断参数个数,来决定是否退出程序
if(this.info.length!=2){
System.out.println("输入的参数不正确,系统退出!") ; // 给出一个正确的格式
System.out.println("格式:java LoginDemo02 用户名 密码") ;
System.exit(1) ; // 系统退出
}
}
};
public class LoginDemo02{
public static void main(String args[]){
Operate oper = new Operate(args) ; // 实例化操作类的对象
System.out.println(oper.login()) ; // 取得验证之后的信息
}
};
问下大家 红色的部分那里private String info[] ;怎么可以这样??这里有个测试代码:
public class test
{
   public static void main(String args[])
{
       int info[]=new int[3];
   info[0]=1;
   info[1]=3;
   info[2]=5;
   for (int i=0;i<3 ;i++ )
   {
          System.out.println(info[i]);
   }
   String sss[];
       sss[1]="hello";
   sss[2]="word";
   System.out.print("");
  }
}
编译会报错~~为什么之前的没错 这里错了啊?

解决方案 »

  1.   

    String sss[];
    sss[1]="hello";
    sss[2]="word";
    这个sss只创建了引用,还没为对象开辟空间 下面直接sss[1]取时面的数据了 肯定是有问题的
    String sss[] = new String[2];
      

  2.   

    String sss[] = new String[3];
      

  3.   

    这样说吧,不知道对不对,你测试的时候是局部变量,局部变量,局部变量不可能通过类对象来分配地址,只有自己new。类里面的变量可以通过类对象来分配地址,类对象的成员变量如果不分配地址直接引用他会报空指针错误。
      

  4.   

    name.equals("lixinghua")这个地方可以
    用常量.equals(变量参数)避免造成空指针异常
      

  5.   

    一维数组的定义  //定义包含三个元素的一维数组  int[] a = new int[3];  a = {1,2,3};//方法1,先new对象,然后赋值  int[] b = {1,2,3}; //方法2,直接赋值  int[] c = new int[3]{1,2,3}; //方法3,new后直接赋值注意:如果用new定义数组时,必须指定其维度,这样定义是错误的: int[] d = new int[];            如果无法确定其元素个数,可以这样定义:int[] e = {};