赵名星 2016-10-13 05:29 采纳率: 100%
浏览 1015
已采纳

try catch 提示未初始化错误

/*分别给cl 和li初始化为null后运行又有nullpointerexception
总而言之,就是觉得try{}里面的赋值没有成功*/
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Scanner;

public class Exercise21 {

public static void main(String[] args) 
{
    // TODO Auto-generated method stub
    Scanner sc=new Scanner(System.in);
    System.out.println("用户名:");
    String name=sc.nextLine();
    System.out.println("密码:");
    String password=sc.nextLine();
    if(new LoginCheck().login(name, password))
        System.out.println("登陆成功!");
    else
        System.out.println("登陆失败!");
}

}

@Retention(value=RetentionPolicy.RUNTIME)
@interface LoginInfo
{
public String name();
public String password();
}

class LoginCheck
{
@LoginInfo(name="zmx",password="123456")
public boolean login(String name,String password)
{
Class<?> cl=null;
try
{
cl=Class.forName("LoginCheck");
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
LoginInfo li=null;//这里不初始化会报错
try
{
li = cl.getMethod("login").getAnnotation(LoginInfo.class);//将这里的getMethod("login")改成getMethod("login",String.class,String.class)就ok了
}
catch (NoSuchMethodException e)
{
e.printStackTrace();
}
catch (SecurityException e)
{
e.printStackTrace();
}
return li.name().equals(name)&&li.password().equals(password);
}
}

  • 写回答

2条回答 默认 最新

  • 毕小宝 博客专家认证 2016-10-13 05:35
    关注

    java语法规定,方法内定义的局部变量必须先初始化,才能再使用的。但是类的成员变量,会被赋值初始值可以不初始化。
    结论就是:局部变量必须先初始化,后使用。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 8月21日

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行