首页 > 解决方案 > Java:无法在尝试之外返回变量?

问题描述

我不断从下面的代码中收到以下错误

错误:

AccountController.java:55: error: cannot find symbol
        return encoded;
               ^
  symbol:   variable encoded
  location: class AccountController
1 error

代码:

public static String hash(String password) {
    try {       
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] byteOfTextToHash = password.getBytes(StandardCharsets.UTF_8);
        byte[] hashedByetArray = digest.digest(byteOfTextToHash);
        String encoded;
        encoded = Base64.getEncoder().encodeToString(hashedByetArray);

    } catch(NoSuchAlgorithmException e) {
        e.printStackTrace();
    };
    return encoded;
}

谢谢您的帮助!

标签: javaswingjavafx

解决方案


您的encoded变量超出范围。将其移出尝试将解决此问题:

public static String hash(String password) {
    String encoded = null;
    try {       
        MessageDigest digest = MessageDigest.getInstance("SHA-256");
        byte[] byteOfTextToHash = password.getBytes(StandardCharsets.UTF_8);
        byte[] hashedByetArray = digest.digest(byteOfTextToHash);
        encoded = Base64.getEncoder().encodeToString(hashedByetArray);

    } catch(NoSuchAlgorithmException e) {
        e.printStackTrace();
    };
    return encoded;
}

推荐阅读