【问题标题】:How would I fix the Syntax error insert '}' to complete block我将如何修复语法错误插入“}”以完成块
【发布时间】:2019-08-15 16:59:31
【问题描述】:

我的代码不断出错。我正在为 Neo4j 创建一个简单的用户定义函数。谁能帮我这个?无论我尝试什么,我都会收到以下错误:

语法错误:插入“}”以完成块。

当我插入 } 时,它给了我一个错误,说我的代码“无法访问”,当我添加一个括号使其可访问时,它让我回到第一个错误并且它只是循环。

这是我的代码:

public class Join {
  static Cipher cipher;
  @UserFunction
  @Description("example.DES ,, Decryption of any input values.")
  public byte[] DES(@Name("set1") List < String > strings1) {
    for (int i = 0; i < strings1.size(); i++) {
      String dot;
      dot = strings1.get(i);
      KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
      keyGenerator.init(128);
      SecretKey secretKey = keyGenerator.generateKey();
      cipher = Cipher.getInstance("AES");
      String encryptedText = encrypt(dot, secretKey);
      System.out.println("Encrypted Text After Encryption: " + encryptedText);
    }
    public static String encrypt(String dot, SecretKey secretKey)
    throws Exception {
      byte[] plainTextByte = dot.getBytes();
      cipher.init(Cipher.ENCRYPT_MODE, secretKey);
      byte[] encryptedByte = cipher.doFinal(plainTextByte);
      Base64.Encoder encoder = Base64.getEncoder();
      String encryptedText = encoder.encodeToString(encryptedByte);
      return encryptedText;
    }
  }

【问题讨论】:

  • 发布的代码有 4 个左括号 {,但只有 3 个右括号 }。错误消息非常有用,它会告诉您一切:您缺少右括号。
  • 当前您的encrypt 方法在您的DES 方法中。也许您只需要在for 循环之后添加一个}
  • @OHGODSPIDERS 是的,我知道,但问题是无论我放在哪里 } 都不起作用。
  • @sara 在 for 循环关闭 DES 方法之后,您可能会丢失它。问题是您似乎还缺少该方法的返回语句。
  • 你需要学会理解代码块在哪里以及如何开始和结束。

标签: java neo4j user-defined-functions


【解决方案1】:

您需要在开始 public static String encrypt(String dot, SecretKey secretKey) 方法之前放置一个 },即在您的 for 循环结束之后

【讨论】:

  • @sara 是什么?
  • @mohdshoaib 我可以发现 2 个:缺少方法 DES 的返回语句,并且在调用 encrypt 时未捕获异常。
  • @OHGODSPIDERS ,很好。我忽略了它。这应该可以解决问题
  • @OHGODSPIDERS 能否重新格式化代码,因为我是 Java 初学者
  • @mohdshoaib 能否请您重新格式化代码,因为我是 Java 初学者
【解决方案2】:

你必须在 encrypt 方法之前放一个{ 来结束for循环,像这样:

public class Join {
  static Cipher cipher;
  @UserFunction
  @Description("example.DES ,, Decryption of any input values.")
  public byte[] DES(@Name("set1") List < String > strings1) {
    for (int i = 0; i < strings1.size(); i++) {
      String dot;
      dot = strings1.get(i);
      KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
      keyGenerator.init(128);
      SecretKey secretKey = keyGenerator.generateKey();
      cipher = Cipher.getInstance("AES");
      String encryptedText = encrypt(dot, secretKey);
      System.out.println("Encrypted Text After Encryption: " + encryptedText);
    }
  }
  public static String encrypt(String dot, SecretKey secretKey)
  throws Exception {
    byte[] plainTextByte = dot.getBytes();
    cipher.init(Cipher.ENCRYPT_MODE, secretKey);
    byte[] encryptedByte = cipher.doFinal(plainTextByte);
    Base64.Encoder encoder = Base64.getEncoder();
    String encryptedText = encoder.encodeToString(encryptedByte);
    return encryptedText;
  }
}

【讨论】:

    【解决方案3】:

    我可以看到缺少} 来关闭类Join,请始终尝试格式化代码以查看此问题。

    结果代码为:

    public class Join {
      static Cipher cipher;
      @UserFunction
      @Description("example.DES ,, Decryption of any input values.")
      public byte[] DES(@Name("set1") List < String > strings1) {
        for (int i = 0; i < strings1.size(); i++) {
          String dot;
          dot = strings1.get(i);
          KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
          keyGenerator.init(128);
          SecretKey secretKey = keyGenerator.generateKey();
          cipher = Cipher.getInstance("AES");
          String encryptedText = encrypt(dot, secretKey);
          System.out.println("Encrypted Text After Encryption: " + encryptedText);
        }
      }
      public static String encrypt(String dot, SecretKey secretKey) throws Exception {
        byte[] plainTextByte = dot.getBytes();
        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
        byte[] encryptedByte = cipher.doFinal(plainTextByte);
        Base64.Encoder encoder = Base64.getEncoder();
        String encryptedText = encoder.encodeToString(encryptedByte);
        return encryptedText;
      }
    }
    

    【讨论】:

    • 这导致另一个错误:方法 encrypt(String, SecretKey) is undefined for the type Join
    • 对不起,} 是在加密方法之前,试试吧
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多