我在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");
调用。