我在Java和编程方面还是个笨蛋,这就是为什么我要学习它:)我需要您的帮助进行练习。我需要在我的arg上进行一些更改来创建函数解密器。

import java.util.StringBuffer;

public class Decipherer{

    String arg ="aopi?sedohtém@#?sedhtmg+p9l!";

    int nbrChar = arg.length()/2;

    String arg2 = arg.substring(5, nbrChar-1);

    String arg3 = arg2.replace("@#?", " ");

    String arg4 = new StringBuilder(arg3).reverse().toString();

    return arg4;

}

public static void main(String[] args) {

    Decipherer mesage1 = new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
    Decipherer message3 = new Decipherer("q8e?wsellecif@#?sel@#?setuotpazdsy0*b9+mw@x1vj");
    Decipherer message4 = new Decipherer("aopi?sedohtém@#?sedhtmg+p9l!");

}


--


线程“主” java.lang.Error中的异常:未解决的编译问题:
构造函数Decipherer(String)未定义
构造函数Decipherer(String)未定义
构造函数Decipherer(String)未定义
语法错误,插入“}”以完成ClassBody


    at Decipherer.main(Decipherer.java:24)


我不明白为什么要问另一个“}”。有人可以向我解释吗?

最佳答案

main方法必须在一个类中。你可以把它例如在Decipherer中。另外,您必须将要执行的操作放入方法中,以能够返回某些内容。并且您需要一个接受String的构造函数,例如

public class Decipherer {

  private final String input;

  // constructor accepting String
  public Decipherer(String input) {
    this.input = input;
  }

  public String decipher() {

    int nbrChar = input.length() / 2;

    String arg2 = input.substring(5, nbrChar - 1);

    String arg3 = arg2.replace("@#?", " ");

    return new StringBuilder(arg3).reverse().toString();
  }

  // main method inside class
  public static void main(String[] args) {
    Decipherer decipherer1 = new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");
    String message1 = decipherer1.decipher();
    Decipherer decipherer2 = new Decipherer("q8e?wsellecif@#?sel@#?setuotpazdsy0*b9+mw@x1vj");
    Decipherer decipherer3 = new Decipherer("aopi?sedohtém@#?sedhtmg+p9l!");
  }
}


通过执行new Decipherer("0@sn9sirppa@#?ia'jgtvryko1");,将使用字段Decipherer创建input类型的对象。然后,您可以在此对象上调用方法decipher()

或者,您也可以不使用构造函数而将静态方法公开,例如

public static String decipher(String input) {
    int nbrChar = input.length() / 2;
    String arg2 = input.substring(5, nbrChar - 1);
    String arg3 = arg2.replace("@#?", " ");
    return new StringBuilder(arg3).reverse().toString();
  }


您可以在主方法中以final String message = Decipherer.decipher("0@sn9sirppa@#?ia'jgtvryko1");调用。

10-08 20:18